2011年9月22日 星期四

淺談資料庫實體檔案搬移(3)

延續上篇現在我們來看第三種方法
方法三:利用T-SQL語法
首先我們利用T-SQL語法查詢Northwind資料庫的相關資料


--database_id DB的ID
--name 邏輯名稱
--physical_name 實際檔案儲存位置
SELECT database_id, name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('Northwind');


從查詢結果我們可以得知Northwind資料庫的DB ID、邏輯名稱及實際檔案儲存位置,接著我們要變更實際檔案儲存位置,由C:\SQL Server 2000 Sample Databases目錄改為D:\SQL Server 2000 Sample Databases目錄,執行以下語法可以完成目錄變更


--變更檔案儲存位置
ALTER DATABASE Northwind
MODIFY FILE (NAME = Northwind, FILENAME = 'D:\SQL Server 2000 Sample Databases\Northwind.mdf');

ALTER DATABASE Northwind
MODIFY FILE (NAME = Northwind_log, FILENAME = 'D:\SQL Server 2000 Sample Databases\Northwind_log.ldf');

這裡要注意的是完成語法只是代表系統目錄已修改Northwind資料庫的檔案路徑,但實際檔案還是要自己將Northwind.mdf及Northwind_log.ldf從C:\SQL Server 2000 Sample Databases目錄移至D:\SQL Server 2000 Sample Databases目錄


為了能搬移檔案我們執行資料庫離線語法

USE master
--設定離線
ALTER DATABASE Northwind SET OFFLINE


執行後我們才可以搬移Northwind.mdf及Northwind_log.ldf到D:\SQL Server 2000 Sample Databases目錄,搬移完成後再執行資料庫在線語法


USE master
--設定在線
ALTER DATABASE Northwind SET ONLINE

最後我們再利用語法檢查


--database_id DB的ID
--name 邏輯名稱
--physical_name 實際檔案儲存位置
SELECT database_id, name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('Northwind');


至於Detach/Attach與ALTER DATABASE的不同可點參考,最後還是再提醒讀者這一系列的發文只針對單純的個人使用環境不適用於複雜營運中的資料庫。




沒有留言:

張貼留言