- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在计划维护之后,DBA 尝试启动 SQL Server;由于存储子系统的某些损坏问题,它失败了。
后来,我们发现保存 TempDB 数据和日志文件的驱动器已损坏,并且导致 SQL Server 无法成功启动。(驱动器已损坏,因此我无法从该驱动器读取任何内容)
所以基本上我们的服务器上没有 Tempdb 数据库。
我们必须在没有 TempDB 的情况下启动 SQL Server
那么我们如何在没有 TempDB 的情况下启动 SQL Server 以及如何解决这个问题?
最佳答案
在尝试任何操作之前,请确保备份数据。如果一个驱动器出现故障,另一个驱动器也可能会出现故障,从而导致您丢失数据。大约在同一时间购买的驱动器也往往会在大约同一时间发生故障。
即使某些数据存储在 RAID 阵列中,您也需要这样做 - RAID isn't the same as a backup 。如果阵列发生问题,最好的情况是等待几个小时才能恢复数据。最坏的情况是,您可能会失去一切。
此过程在The SQL Server Instance That Will not Start中描述。在 TempDB 位置不存在
部分,以及其他站点,如 Start SQL Server without tempdb .
您必须使用 Minimal Configuration 启动 SQL Server 。在该状态下,不使用 tempdb。您可以使用 -f
命令行参数来执行此操作。您可以在服务的属性页中指定此参数,或者从命令行调用sqlservr.exe -f
,例如:
sqlservr -f
另一个选项是使用-t3608
trace flag它仅启动 master
数据库。
sqlservr -t3608
之后,您需要使用sqlcmd
实用程序连接到服务器,例如:
sqlcmd -S myservername -E
使用 Windows 身份验证进行连接。
完成此操作后,您可以转到主数据库并更改 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 ,尽管确切的数字取决于服务器的工作负载。
关于sql-server - 如何在没有 TempDB 的情况下启动 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114038/
我是一名优秀的程序员,十分优秀!