修改SQL Server的TEMPDB路径(含修改失败后,修复SQL Server)

TEMPDB是在SQL Server启动时创建的临时数据库,默认存放在数据库安装路径。根据SQL Server性能或使用的需要,我们可能会需要更改TEMPDB存放的位置。

如下将描述如何更改TEMPDB位置及移动失败后,如何修复启动SQL server


移动TEMPDB路径

打开SSMS(即SQL Server Management Studio),并运行如下代码:

use tempdb
go

--查询TEMPDB逻辑名与当前路径
SELECT name, physical_name 
FROM sys.database_files


注意逻辑名,然后通过如下SQL代码进行修改,修改到所需位置(如 E:\data\):

ALTER DATABASE tempdb MODIFY FILE (NAME = 'tempdev',  FILENAME = 'E:\data\tempdb.mdf')
ALTER DATABASE tempdb MODIFY FILE (NAME = 'templog',  FILENAME = 'E:\data\tempdb.ldf') 
注意:不能直接使用: E:\tempdb.mdfD:\tempdb.mdf,即不能直接使用分区根目录,不然会导致创建失败。需指定路径到一个目录(即文件夹)下,如E:\data\tempdb.mdf

重启SQL server服务,即完成TEMPDB路径的变更


移动失败后,修复SQL server

若移动SQL server的TEMPDB失败,将导致SQL server服务无法正常启动,即数据库不能正常访问。此时我们需重新指定TEMPDB路径进行修复


打开命令窗口(cmd),并在命令窗口运行如下,启动数据库服务:

NET START MSSQLSERVER /f /T3608

或使用指定数据库实例名的方式启动数据库服务:

NET START MSSQL$instancename /f /T3608

编辑并保存如下SQL脚本(如e:\updatepath.SQL),在脚本中重新指定TEMPDB的位置

ALTER DATABASE tempdb MODIFY FILE (NAME = 'tempdev',  FILENAME = 'D:\data\tempdb.mdf')
ALTER DATABASE tempdb MODIFY FILE (NAME = 'templog',  FILENAME = 'D:\data\tempdb.ldf') 

然后使用sqlcmd命令运行这个SQL脚本(注意输入帐号/密码)

sqlcmd -Usa -Pmypassword -i e:\updatepath.SQL

停止当前的数据库服务

NET STOP MSSQLSERVER

最后重启启动SQL server服务即可正常连接与访问。


参考资料

​Error: 5123, Severity: 16, State: 1 when moving TempDB  

http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/01/06/error-5123-severity-16-state-1-when-moving-tempdb.aspx


Moving System Databases

https://msdn.microsoft.com/en-us/library/ms345408%28v=sql.105%29.aspx


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值