逻辑名称
my_Data
my_Log
路径:
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
文件名:
my.MDF
my_1.LDF
将这些文件移动到新位置的sql脚本是什么:D:\DATA
数据库已启用,因此我需要关闭现有连接。
答案 0 :(得分:85)
您忘了提及数据库的名称(是“我的”?)。
ALTER DATABASE my SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE my SET OFFLINE;
ALTER DATABASE my MODIFY FILE
(
Name = my_Data,
Filename = 'D:\DATA\my.MDF'
);
ALTER DATABASE my MODIFY FILE
(
Name = my_Log,
Filename = 'D:\DATA\my_1.LDF'
);
现在,您必须手动将文件从当前位置移动到D:\ Data \(如果您在MODIFY FILE命令中更改了它们,请记得手动重命名)...然后您可以将数据库重新联机:
ALTER DATABASE my SET ONLINE;
ALTER DATABASE my SET MULTI_USER;
这假定SQL Server服务帐户在D:\ Data \文件夹上具有足够的权限。如果不是,您将在SET ONLINE命令中收到错误。
答案 1 :(得分:18)
您可以在SQL Server Management Studio中使用“分离/附加选项”。
答案 2 :(得分:6)
添加文件所需的权限添加并授予以下本地用户权限:SQLServerMSSQLUser $ COMPUTERNAME $ INSTANCENAME,其中 COMPUTERNAME 和 INSTANCENAME 必须替换为分别是计算机名和MSSQL实例。
答案 3 :(得分:0)
这是一个完整的过程,用于将数据库和登录从istance传输到新的,脚本登录以及在目标上重定位数据文件和日志文件。一切都使用metascripts。
对于非现场程序感到抱歉,但脚本很长。你必须:
- 带有原始SID和HASHED密码的脚本登录
- 使用元标记创建脚本来备份数据库
- 使用再次元数据创建脚本以恢复数据库传递重定位参数
- 在源和目标实例上运行生成的脚本
按照上面的链接查看详细信息并下载脚本。
答案 4 :(得分:0)
补充ALTER DATABASE过程的一些注意事项:
1)您可以获得具有逻辑名称和MDF和LDF文件完整路径的完整数据库列表:
USE master SELECT name, physical_name FROM sys.master_files
2)您可以使用CMD移动命令手动移动文件:
移动“来源”“目的地”
示例:
md "D:\MSSQLData"
Move "C:\test\SYSADMIT-DB.mdf" "D:\MSSQLData\SYSADMIT-DB_Data.mdf"
Move "C:\test\SYSADMIT-DB_log.ldf" "D:\MSSQLData\SYSADMIT-DB_log.ldf"
3)您应该更改新数据库创建的默认数据库路径。默认路径是从Windows注册表获得的。
您也可以使用T-SQL进行更改,例如,将默认目标设置为:D:\ MSSQLData
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'D:\MSSQLData'
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'D:\MSSQLData'
GO
摘自:http://www.sysadmit.com/2016/08/mover-base-de-datos-sql-server-a-otro-disco.html