将SQL Server 2008数据库文件移动到新的文件夹位置

时间:2011-07-05 15:11:02

标签: sql sql-server-2008

逻辑名称

  • 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

数据库已启用,因此我需要关闭现有连接。

5 个答案:

答案 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中使用“分离/附加选项”。

请检查:Move a Database Using Detach and Attach

答案 2 :(得分:6)

添加文件所需的权限添加并授予以下本地用户权限:SQLServerMSSQLUser $ COMPUTERNAME $ INSTANCENAME,其中 COMPUTERNAME INSTANCENAME 必须替换为分别是计算机名和MSSQL实例。

答案 3 :(得分:0)

这是一个完整的过程,用于将数据库和登录从istance传输到新的,脚本登录以及在目标上重定位数据文件和日志文件。一切都使用metascripts。

http://zaboilab.com/sql-server-toolbox/massive-database-migration-between-sql-server-instances-the-complete-procedure

对于非现场程序感到抱歉,但脚本很长。你必须:
- 带有原始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