今天發現一台有跑SQLServer的主機異常,發現C磁碟區大小只剩下8MB,
因為上面運作備援的moss,所以content資料庫都很大,LOG檔也很大,
一開始打算先壓縮,發現一直無法完成(可能不夠空間執行壓縮),
所以打算先將LOG交易記錄先用指令壓縮,先清出一些空間出來。
1、截斷交易記錄資料庫 (例如資料庫名稱為abc_DB)
backup log abc_DB with truncate_only
2、找出交易記錄資料庫的邏輯檔名
exec sp_helpdb 'abc_DB'
3、透過第二項查到的邏輯名稱,壓縮交易記錄資料庫
use abc_DB
dbcc shrinkfile([abc_DB_log],2)
考慮主機穩定,計畫將一些資料庫移到其他磁碟區,讓C磁碟不再發生空間不足:
1、確認資料庫檔案目前存放的位置
select name,physical_name,size,state_desc from sys.master_files
2、先將要移動的資料庫做OFFLINE
alter database abc_DB set offline
3、將資料庫實體檔案從C磁碟區移到D磁碟區下
4、對於每個移動的資料庫,透過執行以下指令,以alter指令進行調整資料庫的metadata
ALTER DATABASE abc_DB MODIFY FILE( NAME = abc_DB, FILENAME = 'd:\abc_db.mdf');
ALTER DATABASE abc_DB MODIFY FILE( NAME = abc_DB_log, FILENAME = 'd:\abc_DB_log.ldf');
5、將移動後的資料庫做ONLINE
alter database abc_DB set offline
6、確認移動後的資料庫的位置是否已經更改
select name,physical_name,size,state_desc from sys.master_files
參考資料:
1、交易記錄檔已滿、爆掉;截斷交易記錄檔(2008以前版本適用)
http://sharedderrick.blogspot.tw/2009/03/transaction-log-for-database-is-full.html
2、DBCC SHRINKFILE (Transact-SQL)
https://technet.microsoft.com/zh-tw/library/ms189493(v=sql.90).aspx
3、移動使用者資料庫
https://msdn.microsoft.com/zh-tw/library/ms345483(SQL.90).aspx
4、如何使用 SQL Server 中的卸離和附加功能將 SQL Server 資料庫移到新位置
https://support.microsoft.com/zh-tw/kb/224071
沒有留言:
張貼留言