有時後資料庫會出現門當戶不對的狀況,這時候不用重新投胎(Restore DB),只要幾秒鐘就門當戶對了。
打開SSMS物件總管,資料庫名稱是AdventureWorks2014,是一個漂亮的富家千金。
驗明正身的時候到了
資料庫屬性視窗
AdventureWorks2014資料庫按右鍵 > 屬性 > 選取頁面選"檔案"
發現邏輯名稱及實體檔案名稱都是AdventureWorks2012,是窮小子無誤。
透過sys.database_files查詢
USE AdventureWorks2014
SELECT file_id, name as logical_name, physical_name
FROM sys.database_files
再滴血認親也是一樣的結果!
門當戶對
1.修改邏輯檔案名稱(Logical name)
ALTER DATABASE AdventureWorks2014 MODIFY FILE (NAME=N'AdventureWorks2012_Data', NEWNAME=N'AdventureWorks2014_Data')
GO
ALTER DATABASE AdventureWorks2014 MODIFY FILE (NAME=N'AdventureWorks2012_Log', NEWNAME=N'AdventureWorks2014_Log')
GO
2.將資料庫卸離(detach)
ALTER DATABASE AdventureWorks2014 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
sp_detach_db 'AdventureWorks2014'
3.呼叫Rename command在Windows檔案系統中隱性埋名
*或是透過windows檔案總管修改也行。
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
EXEC master..xp_cmdshell 'Rename C:\sql\AdventureWorks2014_Data.mdf AdventureWorks2014_Data.mdf'
EXEC master..xp_cmdshell 'Rename C:\sql\AdventureWorks2012_Data_log.ldf AdventureWorks2014_Data_log.ldf'
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
4.重新附加資料庫(attach)
CREATE DATABASE [AdventureWorks2014] ON
(NAME = N'AdventureWorks2014_Data', FILENAME = N'C:\sql\AdventureWorks2014_Data.mdf'),
(NAME = N'AdventureWorks2014_Log' , FILENAME = N'C:\sql\AdventureWorks2014_Data_log.ldf')
FOR ATTACH
GO
一切都門當戶對了!
這一個關於富家千金和窮小子的故事。
參考:
Rename logical and physical names of database files in SQL Server