重命名 SQL 日志和主数据库文件

Ryl*_*n08 4 sql-server sql-server-2014

我正在使用 SQL Server 2014。我想知道如何在创建数据库后重命名数据库的 .ldf 和 .mdf 文件?如果可以,步骤是什么?

Dav*_*ett 9

您不能在文件使用时重命名它们,也不要通过停止 SQL Server 使它们“未使用”,它不会自动接受更改。

最快的方法如下:

  1. 使用EXEC sp_detach_db 'database_name'SQL Server Management Studio 中的 或 适当的对话框分离数据库。数据库必须没有当前连接,否则 SQL Server 将不允许您分离它 - 如果您在强制该数据库进入单用户模式时遇到问题。
  2. 根据需要重命名文件
  3. 重新附加数据库,假设您只有一个数据文件和一个日志文件EXEC sp_attach_db 'database_name', 'full_path_to_mdf', 'full_path_to_ldf',例如:EXEC sp_attach_db 'my_renamed_db', 'd:\dbs\data\my_renamed_db.mdf', 'd:\dbs\logs\my_renamed_db.ldf'
    同样,可以改用 SQL Server Management Studio 中的适当对话框。

当您在调用中指定数据库名称时sp_attach_db,这也会执行重命名步骤。

更新:

正如 Travis 在评论中提醒我的那样,sp_attach_db已经正式弃用了一段时间,您应该改用较新的 DDL 方法。上面的例子变成:

CREATE DATABASE my_renamed_db
    ON (FILENAME = 'd:\dbs\data\my_renamed_db.mdf')
     , (FILENAME = 'd:\dbs\data\my_renamed_db.ldf')
FOR ATTACH;
Run Code Online (Sandbox Code Playgroud)

甚至稍微安全一点,您可以通过将数据库设置为离线并修改文件位置来完全避免完全分离数据库(尽管您仍然必须手动移动或重命名文件):

ALTER DATABASE my_renamed_db SET OFFLINE;
ALTER DATABASE my_renamed_db MODIFY FILE (NAME='data_file_name', FILENAME='d:\dbs\data\my_renamed_db.mdf');
ALTER DATABASE my_renamed_db MODIFY FILE (NAME='log_file_name', FILENAME='d:\dbs\data\my_renamed_db.ldf');
ALTER DATABASE my_renamed_db SET ONLINE;
Run Code Online (Sandbox Code Playgroud)

您可以在 之后SET OFFLINE但之前随时移动/重命名文件SET ONLINE

如果您不知道逻辑文件名,您可以在 SSMS 或通过

SELECT f.name, f.physical_name 
FROM   master.sys.databases d 
JOIN   master.sys.master_files f 
       ON d.database_id = f.database_id 
WHERE  d.name = 'my_renamed_db'
Run Code Online (Sandbox Code Playgroud)

如果移动的tempdb东西不同:您不能将其脱机,并且每次服务器启动时都会重新创建它。而是进行ALTER DATABASE MODIFY FILE调用并重新启动 SQL Server 实例。