操作步驟:
1、檢查tempdb的邏輯名字和它的存在位置。可以使用下面語句:
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('tempdb');
2、停止數據庫服務.
3、拷貝原來tempdb的文件到新的位置(原來文件位置可以通過上述查詢得到)。拷貝完畢后,啟動數據庫服務。
4、執行如下命令:
USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = temp2, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb_mssql_2.ndf'); ALTER DATABASE tempdb MODIFY FILE (NAME = temp3, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb_mssql_3.ndf'); ALTER DATABASE tempdb MODIFY FILE (NAME = temp4, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb_mssql_4.ndf'); ALTER DATABASE tempdb MODIFY FILE (NAME = temp5, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb_mssql_5.ndf'); ALTER DATABASE tempdb MODIFY FILE (NAME = temp6, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb_mssql_6.ndf'); ALTER DATABASE tempdb MODIFY FILE (NAME = temp7, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb_mssql_7.ndf'); ALTER DATABASE tempdb MODIFY FILE (NAME = temp8, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb_mssql_8.ndf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\templog.ldf'); GO
在這里,name=tempdev 和templog 等是tempdb的邏輯名字,FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系統臨時數據庫\tempdb.mdf'是tempdb的新位置.
執行結果如下:
5、然后檢查tempdb移動是否成功。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('tempdb');
6、接着重啟數據庫服務
7、注意在步驟3中,我們重新啟動數據庫服務的時候,還是會在老的tempdb路徑下生成一套tempdb的數據庫文件,現在它們都是沒用的垃圾文件了,我們要去刪掉它們。
特別提示:
存放SQL Server數據庫文件及數據庫日志文件的文件夾,必須要開放對Windows用戶組"NT Service\MSSQLSERVER"(也就是SQL Server服務的執行賬戶)的Full control權限,否則會導致上面步驟6中重啟SQL Server服務失敗。
如果你不知道SQL Server服務的執行賬戶是什么,可以通過在Windows服務(services)管理列表中,找到SQL Server數據庫引擎服務(如果你只有一個SQL Server Instance,一般就是"SQL Server (MSSQLSERVER)"),然后查看其"Log On As"列的賬戶:
如果你發現SQL Server執行賬戶不是上圖中的"NT Service\MSSQLSERVER",那么需要將存放SQL Server數據庫文件及數據庫日志文件的文件夾,開放相應Windows賬戶的Full control權限。
這一點要千萬注意,否則SQL Server服務啟動不起來會非常麻煩,如果實在因為移動tempdb到新位置后,SQL Server服務啟動不起來,可以參考下面這個帖子的內容:
How to Start SQL Server without TempDB