3

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

数据:

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

新路径:驱动器:\MSSQL\DATA

日志:

当前路径:Drive:\MYSSQL\LOGS\FOLDER

新路径:驱动器:\MYSSQL\LOGS

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

4

2 回答 2

3

这是一个简单的过程,您也不需要分离数据库来执行此操作,您只需执行以下操作:

  • 设置数据库离线
  • 更改主数据库中的文件位置(使用更改数据库)
  • 物理移动文件
  • 在线设置数据库

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

移动用户数据库

只要移动文件的用户具有权限和运行 SQL 服务器的服务帐户,就可以完全控制新文件夹,这很容易,而且我已经做过很多次了。

一旦您制定了执行第一个数据库的过程,为多个数据库执行此操作也很简单。

于 2013-10-30T09:41:36.717 回答
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 文章

于 2013-10-30T09:50:08.903 回答