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

逻辑名称

  • my_Data
  • my_Log

path:

  • 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

数据库是活的,所以我需要closures现有的连接。

你忘了提到你的数据库的名字(是“我的”?)。

 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 \(并且如果在修改文件命令中更改了它们,请记住手动对其进行重命名),然后可以使数据库重新联机:

 ALTER DATABASE my SET ONLINE; ALTER DATABASE my SET MULTI_USER; 

这假定SQL Server服务帐户在D:\ Data \文件夹上具有足够的权限。 如果没有,您将在SET ONLINE命令中收到错误。

您可以在SQL Server Management Studio中使用“分离/附加”选项。

选中此项: 使用分离和附加移动数据库

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

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

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

对不起,现场的程序,但脚本很长。 你必须:
– 脚本用原始SID和HASHED密码login
– 使用metascripts创build脚本来备份数据库
– 创build脚本来恢复使用再次metascripts传递重定位参数的数据库
– 在源和目标实例上运行生成的脚本。
按照上面的链接查看详细信息和下载脚本。

一些注释来补充ALTER DATABASE过程:

1)您可以获得具有MDF和LDF文件的逻辑名称和完整path的完整数据库列表:

  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)你应该改变默认的数据库path来创build新的数据库。 默认path是从Windowsregistry中获取的。

您也可以使用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