如何查看sqlserver数据库文件位置

如何查看sqlserver数据库文件位置,第1张

1、查询Sql Server数据文件及日志文件的相关信息(包括文件组、当前文件大小、文件最大值、文件增长设置、文件逻辑名、文件路径等)

select from [数据库名][dbo][sysfiles]

转换文件大小单位为MB:

select name, convert(float,size) (81920/10240)/1024 from [数据库名]dbosysfiles

2、可视化 *** 作查看

a登录SQL Server数据库

b找到要查看的数据库,右击

c在下拉菜单中选择 “属性”

d在新出现的“数据库属性”对话框中,左侧选择“文件”,右侧有相对应的路径列,这里就是数据库文件和日志文件的文件位置

首先在服务器上创建真实的目录 tableStruct ;(注意:第三步创建逻辑目录的命令不会在OS上创建真正的目录,所以要先在服务器上创建真实的目录。如下图:)

expdp system/123456@orcl schemas=jwuser dumpfile=jwuser_tablesdmp directory=data_dir logfile=jwuser_tableslog;

impdp ggs/123456 remap_tablespace=JW_USER:TEST remap_schema=jwuser:IMPJW directory=data_dir dumpfile=JWUSER_TABLESDMP logfile=impdp_testlog

数据库导出(expdp)

使用sys或system账号登录oracle

通过"Window + R" 打开dos命令行界面,使用sys或system登录oracle。格式:sqlplus sys/密码@数据库实例名 as sysdba

2、创建逻辑目录 : create or replace directory data_dir as 'E:\orcl\data';

data_dir为路径名称,可自命名,E:\orcl\data为数据库导出文件存放路径(路径必须存在);

创建备份逻辑目录,此目录不是真实的目录,此目录需要手动在数据库服务端创建。

通过 select from dba_directories 可以查看所有的目录

3、为用户授予访问数据目录的权限,输入命令:Grant read,write on directory data_dir to dbuser;

dbuser为数据库用户名(与第4步中相同)

4、导入导出 *** 作授权,输入命令:grant exp_full_database,imp_full_database to dbuser;

5、退出,输入命令:exit;

6、数据导出,执行命令:

expdp dbuser/123456@orcl schemas=dbuser dumpfile=expdpdmp directory=data_dir logfile=expdplog

注意:命令结束不需要加“;”

expdp [为用户名]/[密码]@[服务名]

schemas=[为用户名]

dumpfile=[导出数据库文件(可自命名)]

directory=[目录名]

logfile=[日志文件文件名(可自命名)]

数据库还原前准备

1、创建表空间

复制代码

create tablespace tbs_dbsunny datafile

'D:\app\Sunny\oradata\TableSpace\tbs_dbsunnyDBF' size 1G

autoextend on next 100M maxsize unlimited logging

extent management local autoallocate

segment space management auto;

复制代码

2、创建临时表空间

create temporary tablespace tbs_dnsunny_temp tempfile 'D:\app\Sunny\oradata\TableSpace\tbs_dnsunny_tempDBF' size 1000M autoextend on next 100M maxsize unlimited ;

3、创建用户

create user sunny identified by sunny123 DEFAULT TABLESPACE tbs_dbsunny TEMPORARY TABLESPACE tbs_dnsunny_temp;

4、授权

复制代码

alter user sunny temporary tablespace tbs_dnsunny_temp;

ALTER USER sunny QUOTA UNLIMITED ON TBS_DBSUNNY

grant connect to sunny;

grant resource to sunny;

grant dba to sunny;

grant create trigger to sunny;

grant create session to sunny;

grant create sequence to sunny;

grant create synonym to sunny;

grant create table to sunny;

grant create view to sunny;

grant create procedure to sunny;

grant alter session to sunny;

grant execute on ctxsysctx_ddl to sunny;

grant create job to sunny;

grant sysdba to sunny;

alter user sunny default role all;

-- 删除这个用户以及这个用户下的所有对象

DROP USER sunny CASCADE;

复制代码

数据库导入(impdp)

1、使用sys或system 登录

通过"Window + R" 打开dos命令行界面,使用sys或system登录oracle。格式:sqlplus sys/密码@数据库实例名 as sysdba

sqlplus sys/12345@dborcl as sysdba

2、创建逻辑目录,并手动创建真实目录,并将备份文件DMP,放进此目录下

sqlplus create or replace directory data_dir as 'E:\orcl\data';

3、给目标用户授权

sqlplus grant read,write on directory data_dir to sunny;

4、导入:在dos命令行,执行

注意 : impdp 语句 后面 不要加 " ; "

impdp sunny/sunny123@DBSUNNY directory=data_dir dumpfile=EXPDPBUDGETDMP logfile=impbudgettlog remap_schema =budgett:sunny remap_tablespace=PIMS:TBS_DBSUNNY

注:remap_schema=olduser:newuser 表示把左边的olduser用户的数据,导入到右边的newuser 用户里面

remap_tablespace=old_tbs:new_tbs 表示把将要导入的备份库的表空间old_tbs,导入到新库替换为 new_tbs

expdp导出数据

语法: expdp 用户名/密码@ip地址/实例 ip地址不写默认就是本地

复制代码

属性说明:

userid=test/test --导出的用户,本地用户!!

directory=dmpfile --导出的逻辑目录,一定要在oracle中创建完成的,并且给用户授权读写权限

dumpfile=xxdmp --导出的数据文件的名称,如果想在指定的位置的话可以写成dumpfile=/home/oracle/userxxdmp

logfile=xxlog --日志文件,如果不写这个参数的话默认名称就是exportlog,可以在本地的文件夹中找到

schemas=userxx --使用dblink导出的用户不是本地的用户,需要加上schema来确定导出的用户,类似于exp中的owner,但还有一定的区别

EXCLUDE=TABLE:"IN('T1','T2','T3')" --exclude 可以指定不导出的东西,table,index等,后面加上不想导出的表名

network_link=db_local --这个参数是使用的dblink来远程导出,需要指定dblink的名称

复制代码

列出一些场景:

复制代码

1)导出用户及其对象

expdp scott/tiger@orcl schemas=scott dumpfile=expdpdmp directory=dump_dir logfile=expdplog;

2)导出指定表

expdp scott/tiger@orcl tables=emp,dept dumpfile=expdpdmp directory=dump_dir logfile=expdplog;

3)按查询条件导

expdp scott/tiger@orcl directory=dump_dir dumpfile=expdpdmp tables=empquery='where deptno=20' logfile=expdplog;

4)按表空间导

expdp system/manager@orcl directory=dump_dir dumpfile=tablespacedmp tablespaces=temp,example logfile=expdplog;

5)导整个数据库

expdp scott/123@127001/orcl directory=dump_dir dumpfile=lydmp full=y logfile=expdplog;

复制代码

一般用的都是导出整个数据库,本人使用的代码:

//包含所有用户的表、视图、索引等

expdp JCPT/123@127001/orcl directory=mydata dumpfile=lydmp full=y logfile=expdplog;

//指定用户的表、视图、索引等

expdp JCPT/123@127001/orcl directory=mydata schemas=jcpt dumpfile=lydmp logfile=expdplog;

impdp 导入

列出一些场景:

复制代码

1)导入用户(从用户scott导入到用户scott)

impdp scott/tiger@orcl directory=dump_dir dumpfile=expdpdmp schemas=scott logfile=impdplog;

2)导入表(从scott用户中把表dept和emp导入到system用户中)

impdp system/manager@orcl directory=dump_dir dumpfile=expdpdmp tables=scottdept,scottemp remap_schema=scott:system logfile=impdplog table_exists_action=replace (表空间已存在则替换);

3)导入表空间

impdp system/manager@orcl directory=dump_dir dumpfile=tablespacedmp tablespaces=example logfile=impdplog;

4)导入整个数据库

impdb system/manager@orcl directory=dump_dir dumpfile=fulldmp full=y logfile=impdplog;

5)追加数据

impdp system/manager@orcl directory=dump_dir dumpfile=expdpdmp schemas=systemtable_exists_action logfile=impdplog;

复制代码

日常使用的:

//把用户jcpt中所有的表导入到lyxt用户下

impdp lyxt/lyxt123@127001/orcl directory=mydata dumpfile=LYDMP remap_schema=jcpt:lyxt logfile=ims20171122log table_exists_action=replace

最近遇到一个服务器的数据库文件增长很快,情况属于正常,磁盘空间很快就要满了,但是另一个分区还有大把的空间,所以寻思着怎么把数据库文件,放过去,代码如下:

DECLARE @DBNAME VARCHAR(255)

DECLARE @TargetPath VARCHAR(255)

DECLARE @CmdCommand VARCHAR(2000)

SET @DBNAME='TEST'

SET @TargetPath='D:\Program Files\Microsoft SQL Server\MSSQL10_50MSSQLSERVER\MSSQL\DATA'

--第一步:设置数据库脱机

SET @CmdCommand= 'ALTER DATABASE '+@DBNAME+' SET OFFLINE'

EXEC(@CmdCommand)

--第二步:物理拷贝数据库文件到新目录

DECLARE @FileName VARCHAR(255)

DECLARE @SourceFullName VARCHAR(255)

DECLARE FileCur CURSOR for SELECT name,physical_name from sysmaster_files where database_id=db_id(@DBNAME)

OPEN FileCur

FETCH NEXT FROM FileCur INTO @FileName,@SourceFullName

WHILE @@FETCH_STATUS=0

BEGIN

SET @CmdCommand= 'copy "'+@SourceFullName+'" "'+@TargetPath+'"'

EXEC masterxp_cmdshell @CmdCommand

--修改数据库文件的路径指向新目录

SET @CmdCommand='ALTER DATABASE '+@DBNAME+' MODIFY FILE(FILENAME='''+@TargetPath+CASE WHEN RIGHT(@TargetPath,1)='\'THEN'' ELSE'\' END+

RIGHT(@SourceFullName, CHARINDEX('\', REVERSE(@SourceFullName))-1)+''',name='''+@FileName+''')'

EXEC(@CmdCommand)

FETCH NEXT FROM FileCur INTO @FileName,@SourceFullName

END

CLOSE FileCur

DEALLOCATE FileCur

--第三步:设置数据库联机

SET @CmdCommand= 'ALTER DATABASE '+@DBNAME+' SET ONLINE'

EXEC(@CmdCommand)

也可以把这个做成一个过程,就不在这里修改了。

windows下可以通过注册表查找ORACLE_HOME linux或者unix, 通过命令env |grep ORACLE查看ORACLE_HOME变了对应的路径。

拓展:

1、Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

2、ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能。

以上就是关于如何查看sqlserver数据库文件位置全部的内容,包括:如何查看sqlserver数据库文件位置、Oracle expdp 导出/impdp 导入数据库、oracle下db_user是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9778142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存