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数据文件)