ITPub博客

SQLServer移动数据文件

原创 作者:chenoracle 时间:2018-07-12 16:05:48 0 删除 编辑

SQLServer移动数据文件

 

移动用户数据库

移动系统数据库

 

移动用户数据库

https://docs.microsoft.com/zh-cn/sql/relational-databases/databases/move-user-databases?view=sql-server-2017

 SQL Server中,通过在 ALTER DATABASE 语句的 FILENAME 子句中指定新的文件位置,可以将用户数据库中的数据、日志和全文目录文件移动到新位置。 此方法适用于在同一 SQL Server实例中移动数据库文件。 若要将数据库移动到另一个 SQL Server 实例或另一台服务器上,请使用 备份和还原  分离和附加操作

 

将数据库chenjch文件迁移到同一服务器其他目录;

1.   离线准备迁移的数据库。

---先全备数据库

use master;

---执行offline命令之前,确保chenjch数据库没有任何连接,否则会被阻塞;

ALTER DATABASE chenjch SET OFFLINE; 

2.  将文件移动到新位置

SELECT name, physical_name AS CurrentLocation, state_desc 

FROM sys.master_files 

WHERE database_id = DB_ID(N'chenjch');

---手动移动文件到指定目录下

3.  对于已移动的每个文件请运行以下语句

ALTER DATABASE chenjch MODIFY FILE ( NAME = chenjch, FILENAME = 'D:\sqlserver2012\data\chenjch\chenjch.mdf' ); 

---文件 'chenjch' 在系统目录中已修改。新路径将在数据库下次启动时使用。

ALTER DATABASE chenjch MODIFY FILE ( NAME = chenjch_log, FILENAME = 'D:\sqlserver2012\data\chenjch\chenjch_log.ldf'); 

---文件 'chenjch_log' 在系统目录中已修改。新路径将在数据库下次启动时使用。

4.  运行以下语句

ALTER DATABASE chenjch SET ONLINE; 

5.  通过运行以下查询来验证文件更改

SELECT name, physical_name AS CurrentLocation, state_desc 

FROM sys.master_files 

WHERE database_id = DB_ID(N'chenjch'); 

use chenjch

select count(*) from t1; ---100

 

移动系统数据库

2.1 移动 master 数据库

https://docs.microsoft.com/zh-cn/sql/relational-databases/databases/move-system-databases?view=sql-server-2017

SELECT name, physical_name AS CurrentLocation, state_desc 

FROM sys.master_files 

WHERE database_id = DB_ID(N'master');

D:\sqlserver2012\0\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf

D:\sqlserver2012\0\MSSQL11.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

移动到

D:\sqlserver2012\data\master\ master.mdf

D:\sqlserver2012\data\master\ DATA\mastlog.ldf

1 开始 菜单中依次指向 所有程序 Microsoft SQL Server 配置工具然后单击 SQL Server 配置管理器

2 SQL Server 服务节点中右键单击 SQL Server 实例 SQL Server (MSSQLSERVER)),并选择属性

3 SQL Server (instance_name) 属性**** 对话框中单击启动参数选项卡

4 现有参数框中选择 d 参数以移动 master 数据文件 单击 更新 以保存更改

指定启动参数框中将该参数更改为 master 数据库的新路径

5 现有参数框中选择 l 参数以移动 master 日志文件 单击 更新 以保存更改

指定启动参数框中将该参数更改为 master 数据库的新路径

数据文件的参数值必须跟在 -d 参数的后面日志文件的参数值必须跟在 -l 参数的后面

-dD:\sqlserver2012\0\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf

改成

-dD:\sqlserver2012\data\master\ master.mdf

-lD:\sqlserver2012\0\MSSQL11.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

改成

-lD:\sqlserver2012\data\master\mastlog.ldf

6 通过右键单击实例名称并选择停止来停止 SQL Server 实例

7 master.mdf mastlog.ldf 文件移动到新位置

手动拷贝文件到新的目录

8 重新启动 SQL Server实例

9 通过运行以下查询验证 master 数据库的文件更改

SELECT name, physical_name AS CurrentLocation, state_desc 

FROM sys.master_files 

WHERE database_id = DB_ID('master'); 

10 此时 SQL Server 应正常运行 但是 Microsoft 建议还调整 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup 处的注册表项其中 instance_ID 类似于 MSSQL13.MSSQLSERVER 在该配置单元中 SQLDataRoot 值更改为新路径 未能更新注册表可能会导致修补和升级失败

……

 

迁移问题:

无法找到文件

确保修改路径已经生效,保路径和名称正确;

拒绝访问

权限问题

迁移后的文件,

右键---属性---安全---Authenticated Users---完全控制

 


下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-08-05

  • 博文量
    187
  • 访问量
    611016