Ryl*_*n08 4 sql-server sql-server-2014
我正在使用 SQL Server 2014。我想知道如何在创建数据库后重命名数据库的 .ldf 和 .mdf 文件?如果可以,步骤是什么?
您不能在文件使用时重命名它们,也不要通过停止 SQL Server 使它们“未使用”,它不会自动接受更改。
最快的方法如下:
EXEC sp_detach_db 'database_name'
SQL Server Management Studio 中的 或 适当的对话框分离数据库。数据库必须没有当前连接,否则 SQL Server 将不允许您分离它 - 如果您在强制该数据库进入单用户模式时遇到问题。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'
当您在调用中指定数据库名称时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 实例。