Sql-Server

安全移動和創建新的 tempdb 文件

  • April 4, 2019

我想知道兩件事:

  • 如何以最少的停機時間安全地移動 tempdb?
  • 您需要多少個 tempdb 文件?

每個核心是 1 個文件嗎?那麼 quad-core = 4 tempdb 文件,創建三個新文件?

要移動tempdb文件,您只需執行以下操作:

alter database tempdb
modify file
(
   name = tempdev,
   filename = 'C:\YourNewTempdbDir\tempdb.mdf'
)
go

alter database tempdb
modify file
(
   name = templog,
   filename = 'C:\YourNewTempdbDir\templog.ldf'
)
go

如果要向 中添加新文件tempdb,只需執行以下操作(前提是您要將其添加到PRIMARY文件組,或創建自己的文件組):

alter database tempdb
add file
(
   name = tempdb2,
   filename = 'C:\YourNewTempdbDir\Tempdb2.ndf'
)
go

要使這些更改生效,您需要重新啟動 SQL Server 服務。因此**,就最小化停機時間而言,您受限於服務重啟所需的時間**。您不必擔心移動預先存在的tempdb數據庫文件,因為 SQL Server 總是重新創建文件,並且新的位置/文件將在服務啟動時創建。

至於“每個核心 1 個 tempdb 數據文件”,這在很大程度上是一個神話。正確的方法是監控tempdb頁面可用空間 (PFS)、全域分配映射 (GAM) 和共享全域分配映射 (SGAM) 頁面的文件爭用。請參考這篇文章來獲取一個查詢 (替代連結) ,該查詢通過sys.dm_os_waiting_tasksDMV 查看有多少tempdb文件爭用。然後你需要擺脫這個,而不是僅僅覆蓋tempdb與核心數量相同的文件。這是更可取的方法。

引用自:https://dba.stackexchange.com/questions/20734