移动 DB/LOG 文件 - 分离/附加 - 问题

Den*_*nis 2 sql-server sql-server-2016

我想移动数据库的 MDF/LDF 文件位置。从我读到的内容来看,我发现我应该使用分离/附加,而不仅仅是将数据库脱机并重新定位文件。我就是这样做的,并使用以下内容重新连接数据库。

CREATE DATABASE MyAdventureWorks   
    ON (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Data.mdf'),  
    (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Log.ldf')  
    FOR ATTACH;  
GO
Run Code Online (Sandbox Code Playgroud)

当然使用我的新文件位置,它使用了两个单独的卷,而不是从中移动的位置。

BUUUT,所有这些都是将文件放回我没有指定的原始卷上。它还将数据库置于只读状态。

任何帮助,将不胜感激。

谢谢

SQL Server 2016

Kin*_*hah 5

我认为正确(和首选)的方式应该是

  1. 使用alter database....MODIFY FILE- 这将更新系统目录。
  2. 使数据库脱机
  3. 将文件物理移动到您在步骤 1 中指定的新位置。
  4. 在线数据库

编写了一个脚本来重命名数据库 - db 名称和文件 - 逻辑和物理,您可以使用该逻辑根据您的要求对其进行调整。

注意:在执行任何分离/附加之前,您应该对数据库进行完整备份。请参阅坏习惯:使用 MDF/LDF 文件 ..来自 Aaron Bertrand。