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

时间:2013-10-30 09:16:02

标签: sql sql-server-2008-r2

目前我有一个我希望在当前服务器上移动的数据库列表。

DATA:

当前路径:驱动器:\ MSSQL \ DATA \ FOLDER

新路径:云端硬盘:\ MSSQL \ DATA

日志:

当前路径:云端硬盘:\ MYSSQL \ LOGS \ FOLDER

新路径:云端硬盘:\ MYSSQL \ LOGS

是否有可用于设置脱机多个数据库的SQL脚本,将它们分离并将它们附加到新位置?这也是一个生产环境,并且是相当大的数据库(备份和恢复需要更长的时间)。总共需要移动9个数据库,这是一个简单的过程,只要位置和用户具有所需的权限?谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

这是一个简单的过程,你真的不需要分离数据库来做它,你可以按照以下方式做一些事情:

  • 设置db offline
  • 更改主数据库中的文件位置(使用alter database)
  • 物理移动文件
  • 设置db online

该过程在以下文章中描述:

Move User Databases

只要移动文件的用户拥有权限和服务帐户,你就可以运行SQL服务器,因为它可以完全控制新文件夹,这很简单,而且我做了很多次。

在完成第一个数据库的过程后,为多个数据库执行此操作也很简单。

答案 1 :(得分:1)

您可以使用此代码更改路径。但您必须手动将文件移动到新位置。 WITH ROLLBACK IMMEDIATE通过断开当前连接来加速离线过程。

ALTER DATABASE <db-name> SET OFFLINE WITH ROLLBACK IMMEDIATE;
ALTER DATABASE <db-name> MODIFY FILE ( NAME = <db-name>, FILENAME = <db-path\filename.mdf> );
ALTER DATABASE <db-name> SET ONLINE;

有关详细信息,请查看相关的MSDN article