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
ALTER DATABASE tempdb
MODIFY FILE ( name=tempdev, filename='D:\Newpath\tempdb.mdf')
GO
ALTER DATABASE tempdb
MODIFY FILE ( name=templog, filename='D:\Newpath\templog.ldf')
GO
要移动
tempdb
文件,您只需执行以下操作:如果要向 中添加新文件
tempdb
,只需执行以下操作(前提是您要将其添加到PRIMARY
文件组,或创建自己的文件组):要使这些更改生效,您需要重新启动 SQL Server 服务。因此,就最小化停机时间而言,您受限于服务重启所需的时间。您不必担心移动预先存在的
tempdb
数据库文件,因为 SQL Server 总是重新创建文件,并且新的位置/文件将在服务启动时创建。至于“每个核心 1 个 tempdb 数据文件”,这在很大程度上是一个神话。正确的方法是监视
tempdb
页面可用空间 (PFS)、全局分配映射 (GAM) 和共享全局分配映射 (SGAM) 页面的文件争用。请参考这篇文章来获取一个查询 (替代链接) ,该查询通过sys.dm_os_waiting_tasks
DMV 查看有多少tempdb
文件争用。然后你需要摆脱这个,而不是仅仅覆盖tempdb
与核心数量相同的文件。这是更可取的方法。要移动 tempdb,请执行:
然后重新启动您的 SQL Server 服务 (MSSQLServer)。
tempdb 中的文件数 - 请参阅 Paul Randall 的文章:每天的 SQL Server DBA 神话:(12/30) tempdb 应该始终每个处理器内核有一个数据文件
来自微软的建议:
移动 TempDB 文件是一个两步过程:
SQL Server
更改生效(这是您需要的最短停机时间)要告诉 SQL 在哪里创建新的 TempDB 文件,您可以使用:
这将生成您需要运行的 T-SQL 语句,以将文件移动到
drive:\folder
您想要的新文件。(点击图片放大)运行移动语句后,您可以再次运行上述查询,以检查该
Current Location
列现在是否显示您的新drive:\folder
.对更改感到满意后,重新启动 SQL Server 服务。