在DBA尝试启动SQL Server时进行计划维护; 它由于存储子系统的某些损坏问题而失败。
稍后,我们发现我们拥有TempDB数据和日志文件的驱动器已损坏,并且阻止了SQL Server成功启动。 (驱动器已损坏,因此我无法从该驱动器中读取任何内容)
基本上我们在服务器上没有Tempdb数据库。
我们必须在没有TempDB的情况下启动SQL Server
那么我们如何在没有TempDB的情况下启动SQL Server以及我们如何解决这个问题呢?
答案 0 :(得分:3)
在尝试任何操作之前,请确保备份数据。如果一个驱动器发生故障,另一个驱动器可能会发生故障并让您没有数据大约在同一时间购买的驱动器也会在同一时间内失败。
即使某些数据存储在RAID阵列中,您也需要这样做 - RAID isn't the same as a backup。如果阵列出现问题,最好的情况是你要等几个小时才能恢复数据。最糟糕的情况是,你可能会失去一切。
TempDB location does not exist
部分的The SQL Server Instance That Will not Start以及Start SQL Server without tempdb等其他网站介绍了该流程。
您必须使用Minimal Configuration启动SQL Server。在该状态下,不使用tempdb。您可以使用-f
命令行参数执行此操作。您可以在服务的属性页面中指定此参数,也可以从命令行调用sqlservr.exe -f
,例如:
sqlservr -f
另一种选择是使用仅启动-t3608
数据库的master
trace flag。
sqlservr -t3608
之后,您需要使用sqlcmd
实用程序连接到服务器,例如:
sqlcmd -S myservername -E
使用Windows身份验证进行连接。
执行此操作后,您可以转到master数据库并更改tempdb文件的文件位置:
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');
GO
之后,从服务中删除参数(如果在那里设置)并重新启动服务。
最后,您可能需要重新考虑TempDB的展示位置。 TempDB主要用于排序,计算窗口函数或可用RAM不足的情况。某些操作需要创建中间结果,这些结果存储在TempDB中。一般来说,你应该有 multiple tempdb files,但具体数量取决于服务器的工作量。
答案 1 :(得分:0)
它是什么版本的SQL Server?一个简单的解决方案是从该位置移动tempdb。*文件并重新启动SQL Server,它将创建新的tempdb文件。如果将这些文件保存在同一位置,则无法启动。
答案 2 :(得分:0)
步骤1:以最小配置模式启动SQL Server。
点击here
看,"How to start the SQL Server in minimal mode using command prompt".
步骤2:SQL Server以最小配置模式启动后; 连接到SQL Server实例并将TempDB数据和日志文件移动到新位置。
请参阅move TempDB data and log files to new location
步骤3:执行故障排除步骤后;键入Quit退出SQLCMD窗口,然后按Enter键。
第4步:。在初始窗口中,单击
CTRL C
并输入Y
以停止SQL Server服务。步骤5:最后,使用SQL Server配置管理器启动SQL Server数据库引擎。