20180712- 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— 完全控制
在这里插入图片描述
欢迎关注我的微信公众号"IT小Chen"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值