gpt4 book ai didi

sql-server - 如何在没有 TempDB 的情况下启动 SQL Server

转载 作者:行者123 更新时间:2023-12-02 04:03:49 25 4
gpt4 key购买 nike

在计划维护之后,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com