首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

T-SQL 修改 SQL Server 資料庫邏輯名、資料庫名與實體檔名完整流程

     編輯:關於SqlServer

資料庫重命名在遷移、測試環境建立、命名規範統一時常需執行。本文提供完整 T-SQL 腳本,涵蓋邏輯檔名、資料庫名稱、實體檔名三層次修改,並說明關鍵注意事項。

⚠️ 執行前提:確保無作用中連線

在「活動監視器」或執行 sp_who2 確認目標資料庫無任何 Session,否則 ALTER DATABASE ... SET SINGLE_USER WITH ROLLBACK IMMEDIATE 可強制斷開。

一、修改邏輯檔名

USE master;
GO
ALTER DATABASE YQBlogAA MODIFY FILE (NAME = 'YQBlogAA',     NEWNAME = 'YQBlog');
ALTER DATABASE YQBlogAA MODIFY FILE (NAME = 'YQBlogAA_log', NEWNAME = 'YQBlog_log');
GO

二、修改資料庫名稱

EXEC sys.sp_renamedb @dbname = 'YQBlogAA', @newname = 'YQBlog';
GO

三、修改實體檔名(需離線操作)

  1. 分離資料庫
  2. 啟用 xp_cmdshell 重命名實體檔
  3. 重新附加
-- 1. 分離
EXEC sp_detach_db 'YQBlog';
GO

-- 2. 開啟 xp_cmdshell(需 sysadmin)
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
GO

-- 3. 重命名實體檔(路徑勿含中文)
EXEC xp_cmdshell 'ren "C:\Data\YQBlogAA.mdf"   "YQBlog.mdf"';
EXEC xp_cmdshell 'ren "C:\Data\YQBlogAA_log.ldf" "YQBlog_log.ldf"';
GO

-- 4. 重新附加
EXEC sp_attach_db @dbname = N'YQBlog',
    @filename1 = N'C:\Data\YQBlog.mdf',
    @filename2 = N'C:\Data\YQBlog_log.ldf';
GO

四、現代替代方案(SQL Server 2012+ 建議)

使用 ALTER DATABASE ... MODIFY FILE 搭配 SET OFFLINE/ONLINE 可避免分離/附加風險:

ALTER DATABASE YQBlog SET OFFLINE WITH ROLLBACK IMMEDIATE;
-- 手動或用 PowerShell 改檔名
ALTER DATABASE YQBlog MODIFY FILE (NAME = 'YQBlog', FILENAME = 'C:\Data\YQBlog_new.mdf');
ALTER DATABASE YQBlog MODIFY FILE (NAME = 'YQBlog_log', FILENAME = 'C:\Data\YQBlog_new_log.ldf');
ALTER DATABASE YQBlog SET ONLINE;

五、檢查腳本

SELECT name AS logical_name, physical_name 
FROM sys.master_files 
WHERE database_id = DB_ID('YQBlog');

完成上述步驟,即可實現邏輯名、資料庫名、實體檔名三位一體的重命名,確保中繼資料與檔案系統一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved