SQLServer数据库⽂件路径迁移步骤
⼀、使⽤背景
实际项⽬中,经常由于数据库服务器磁盘空间不⾜,导致现场数据⽆法及时⼊库,引发系统⽆法访问的问题,这种情况⼀般是清理服务的磁盘空间,主要有,删除不必要的⽇志、备份⽂件或不必要的软件等;但是,对于数据库服务器⽽⾔,除了必要的软件外,⼀般不在安装其他软件,保存的基本上为现场数据⽂件,所以,针对这种情况,⼀般我们只能做数据迁移,迁移⾄空间更⼤的磁盘或者其他服务器中。这⾥以SQL Server数据为例,简要说明涉及到的步骤。
⼆、实现步骤
1.更改数据库实例(含数据⽂件和⽇志⽂件)的保存路径
使⽤SQL Server⾃带的连接⼯具,SQL Server Management Studio,连接后,在连接名处,右击,选择“属性”,在属性框,定位
⾄“数据库设置”选项卡,在“数据库默认位置”设置新的路径,如下图:
点击“确定”,保存修改,此时,会及时⽣效,不需要重启服务;
2.更改⽤户数据库(含数据库⽂件和⽇志⽂件)的保存路径
a)新建查询语句,分别输⼊以下命令,查询⽤户数据库存储位置
select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files
where database_id=db_id(N'prd_poms');
其中,prd_poms表⽰⽤户⾃⼰定义的数据库名称,该语句⽤于查询,prd_poms数据库的数据⽂件和⽇志⽂件的名称,以及对应的路径,便于后续步骤使⽤。
查询结果可能如下图:
b)更改⽤户数据库的保存路径
输⼊以下语句:
alter database prd_poms modify file ( name = prd_poms, filename = 'D:\Program Files\Microsoft SQL
Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\prd_poms.mdf');
alter database prd_poms modify file ( name = prd_poms_log, filename = 'D:\Program Files\Microsoft SQL
Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\prd_poms_log.ldf');
上述语句中,粗体红⾊的部分为数据库的名称,与步骤a)中的数据库名称⼀致,斜体红⾊部分对应步骤a)中查询的结果,分别表是⽂件名称,⽽红⾊斜体黄⾊背景部分为,⽂件更改后最终需要保存的路径。
c)执⾏后,在⽂件正确的情况下,会提⽰修改成功。
注:由于SQL Server数据库还有系统数据库,因此,还需要对系统数据库按照上述步骤做同样的修改,这⾥不再累述。
3.修改完成后,需要重启数据库服务,才能使设置⽣效。
sqlserver备份表语句a)暂定数据库服务,打开SQL Server 配置管理器(数据库⾃带⼯具),到SQL Server服务,停⽌服务,如下图:
或者直接在系统的“服务”中,到SQL Server服务,停⽌服务也OK。
b)停⽌数据库服务后,要确保新的路径已经存在,否则会导致数据库⽆法启动,以及其他异常。所以,没有的路径,请新建路径。再将原来数据库⽂件(含数据和⽇志⽂件)均复制到新的⽬录中。注:数据库服务必须要停⽌,否则⽆法复制相关⽂件。
3.重启数据库服务,使所有配置⽣效
三、出现的问题
若出现⽆法启动的情况,且从系统的“事件查看器”中,发现原因为:
“FCB::Open failed: ⽆法打开⽂件号 1 的⽂件”之类报错信息,解决⽅式如下:
到SQL Server服务,右击,选择“属性”,如图:
在弹框的“登录”选项卡中,选择“本地账户”登录,保存,如下图
再次启动SQL Server服务,即可成功。
四、全部sql
下⾯写上⼀些sql语句:
查询系统数据库数据和⽇志⽂件存储路径:
select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files where database_id=db_id(N'master');
select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files where database_id=db_id(N'model');
select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files where database_id=db_id(N'msdb');
select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files
where database_id=db_id(N'tempdb');
更改系统数据库和⽇志⽂件存储路径:
alter database master modify file ( name = master, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf');
alter database master modify file ( name = mastlog, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf');
alter database model modify file ( name = modeldev, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\model.mdf');
alter database model modify file ( name = modellog, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\modellog.ldf');
alter database msdb modify file ( name = MSDBData, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\MSDBData.mdf');
alter database msdb modify file ( name = MSDBLog, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf');
alter database tempdb modify file ( name = tempdev, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\tempdb.mdf');
alter database tempdb modify file ( name = templog, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\templog.ldf');
查询⽤户数据库数据和⽇志⽂件存储路径
select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files  where database_id=db_id(N'prd_acs');
更改⽤户数据库和⽇志⽂件存储路径:
alter database prd_acs modify file ( name = prd_acs, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\prd_acs.mdf');
alter database prd_acs modify file ( name = prd_acs_log, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\prd_acs_1.ldf');

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。