2015年3月19日 星期四

壓縮交易紀錄與移動SQL資料庫檔案

今天發現一台有跑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


沒有留言:

張貼留言