如何移動已存在的SQL Server 2005中的user database
有時候主機的硬碟空間不足或是因為要調整硬碟配置, 會動到資料庫的存放位置, 這裡有一篇 kb 在處理這個作業.
移動使用者資料庫
內容說明蠻詳細的, 我這裡簡單列出操作的方式:
1. 先找出該 db 的所有檔案, 利用以下指令(其中USERDB是假設的使用者資料庫名稱):
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'USERDB')
(基本上至少會有兩個, 一個是放 data 的 mdf, 一個是放 log 的 ldf 檔案的所在位置)
2. 接下來將資料庫先離線:
ALTER DATABASE USERDB SET OFFLINE;
1).可能會花一些時間
2). USERDB 名称如若含有特别字符(空格,横线...) ,可以用“” 来包含.
3. 再來就是將資料庫的實體檔案搬移到指定位置, 這裡假設是 d:\sqldata\
![用戶插入圖片](http://diary.tw/attach/1/1193757406.png)
7. 進行資料庫測試, 例如 select 一些資料, 確認沒問題後, 即完成.
這個作業其實偶而會用到, 而且機會不低, 尤其是檔案大小成長速度快的, 非常實用, 給大家參考, 另外這篇雖然是 SQL Server 2005 的資料, 不過 SQL Server 2000 也同樣適用. 當然, 使用 backup / restore 的方式也沒問題, 只是用這個方式會快得多了. 另外使用 detach / attach db 的方式也是一種做法(後面資料也有)
如何使用 SQL Server 中的卸離和附加功能將 SQL Server 資料庫移到新位置http://support.microsoft.com/kb/224071/zh-tw
有時候主機的硬碟空間不足或是因為要調整硬碟配置, 會動到資料庫的存放位置, 這裡有一篇 kb 在處理這個作業.
移動使用者資料庫
內容說明蠻詳細的, 我這裡簡單列出操作的方式:
1. 先找出該 db 的所有檔案, 利用以下指令(其中USERDB是假設的使用者資料庫名稱):
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'USERDB')
![用戶插入圖片](http://diary.tw/attach/1/1022287795.png)
2. 接下來將資料庫先離線:
ALTER DATABASE USERDB SET OFFLINE;
1).可能會花一些時間
2). USERDB 名称如若含有特别字符(空格,横线...) ,可以用“” 来包含.
3. 再來就是將資料庫的實體檔案搬移到指定位置, 這裡假設是 d:\sqldata\
4. 接下來就是將資料庫的 metadata 利用 alter database 指令進行調整:
ALTER DATABASE USERDB
MODIFY FILE
( NAME = USERDB,
FILENAME = 'd:\sqldata\USERDB.mdf');
ALTER DATABASE USERDB
MODIFY FILE
( NAME = USERDB_log,
FILENAME = 'd:\sqldata\USERDB_log.ldf');
5. 將資料庫上線:
ALTER DATABASE USERDB SET ONLINE;
6. 再次確認資料庫檔案所在位置:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'USERDB')
![用戶插入圖片](http://diary.tw/attach/1/1193757406.png)
7. 進行資料庫測試, 例如 select 一些資料, 確認沒問題後, 即完成.
這個作業其實偶而會用到, 而且機會不低, 尤其是檔案大小成長速度快的, 非常實用, 給大家參考, 另外這篇雖然是 SQL Server 2005 的資料, 不過 SQL Server 2000 也同樣適用. 當然, 使用 backup / restore 的方式也沒問題, 只是用這個方式會快得多了. 另外使用 detach / attach db 的方式也是一種做法(後面資料也有)