修改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 Server的TEMPDB路径(含修改失败后,修复SQL Server)_第1张图片

注意逻辑名,然后通过如下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


你可能感兴趣的:(sql,数据库,server,tempdb)