問題描述
TEMP數據庫過大,存在于C盤,單機環境下操作比較簡單,僅需要重啟即可重建tempdb數據庫;AlwaysOn群集環境同樣,重啟服務即可重建本機節點tempdb數據庫;但以上操作治標不治本,為徹底解決temp數據庫過大問題,我們需要將tempdb數據庫轉移位置放在其他盤符。
解決方案
1、找到原tempdb對應文件邏輯名及實際文件存放位置
select name,physical_name from sys.master_files where database_id=db_id('tempdb')
新存放tempdb數據路徑如下
F:db
2、數據庫中修改對應存放位置
示例執行語句:
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:DataBaseNewtempdb.mdf');
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'D:DataBaseNewtemplog.ldf');
可以通過如下語句批量獲取多個(若有)tempdb數據文件更改:
select name,'ALTER DATABASE tempdb MODIFY FILE (NAME= '+name+' , FILENAME= '''+REPLACE(physical_name,'C:Program FilesMicrosoft SQL ServerMSSQL14.MSSQLSERVERMSSQLDATA','D:tempdbdata') +''')'from sys.master_files where database_id=db_id('tempdb')
3、重啟數據庫服務
重啟數據庫服務后tempdb自動重建,因此對應不需要在第2步操作完成后實際遷移數據文件(原數據文件不會被自動刪除,因此需要手動在重啟服務后刪除原位置下tempdb數據文件)