MSSQL启停纠结:一次启动却又再停止了

问题出现

当我们在使用MSSQL时,可能会遇到这样的问题:我们启动MSSQL,但是它却马上停止了。这时我们不得不再次重新启动它,而它往往还是会停止。

遇到这种问题应该怎么办呢?本文将针对此问题给出解决方案。

定位问题

为了解决这个问题,我们首先需要定位问题所在。通常情况下,MSSQL启动时会生成一个错误日志,我们从中可以定位到具体的问题。

定位方法如下:

步骤一:找到错误日志

MSSQL的错误日志位于MSSQL安装目录下的“\MSSQL\Log”目录中,以“ERRORLOG”为文件名,加上一个整数后缀,例如“ERRORLOG.1”、“ERRORLOG.2”等。

步骤二:查看错误日志

我们通过打开对应的错误日志文件,可以看到MSSQL在启动时记录的错误信息。

2019-05-24 10:08:28.26 spid5s SQL Server is starting at normal priority base (=7). This is an informational message only. No user action is required.

2019-05-24 10:08:28.27 spid5s The OPTIMIZER_COMPATIBILITY_LEVEL is 130 and is equivalent to the latest version of SQL Server.

2019-05-24 10:08:28.28 spid5s Microsoft SQL Server 2016 (SP1-GDR) (KB4505219) - 13.0.4211.2 (X64)

Jun 15 2019 19:14:47

Copyright (c) Microsoft Corporation

Developer Edition (64-bit) on Windows 10 Pro 10.0 (Build 18362: ) (Hypervisor)

2019-05-24 10:08:28.28 spid5s UTC adjustment: 8:00

2019-05-24 10:08:28.28 spid5s Your system timezone is -480 minutes (-8 hours) ahead of UTC. This will be reflected in new temporal types datetimeoffset and datetime2.

2019-05-24 10:08:28.29 spid5s [INFO] HkHostDbCtxt::Initialize: Attempting to start TCPIP listening endpoint...

2019-05-24 10:08:31.26 spid5s [INFO] HkHostDbCtxt::Initialize: Detected enabled TLS protocols: 0xc0,0x301,0x302

2019-05-24 10:08:31.26 spid5s [INFO] HkHostDbCtxt::Initialize: Detected enabled TLS ciphers: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_RC4_128_MD5

2019-05-24 10:08:31.30 spid5s SQL Server is now ready for client connections. This is an informational message; no user action is required.

我们需要查找其中包含“ERROR”的行,通常错误信息会在其附近显示。

步骤三:解决问题

依照错误日志中的信息,我们可以针对性地解决问题。

可能的原因

以下是MSSQL启动失败的可能原因:

1. 磁盘空间不足

当系统磁盘空间不足时,MSSQL可能会因为无法访问文件而启动失败。

2. 记录文件已满

当MSSQL的日志文件已满时,它可能会停止运行。

3. 端口被占用

当MSSQL要使用的端口已被其他程序占用时,启动就会失败。

4. 服务账号权限不足

当MSSQL的服务账号权限不足时,启动会失败。例如,服务账号没有足够的权限访问MSSQL数据文件或日志文件。

解决方法

针对上述可能的原因,我们可以采取以下措施来解决问题。

1. 清理磁盘空间

我们可以通过清理系统磁盘空间来缓解磁盘空间不足的问题。有些日志文件可以被删除,还有一些下载后没有删除的临时文件。

2. 增加日志文件大小

我们可以尝试增加MSSQL的日志文件大小来缓解日志文件已满的问题,方法如下:

USE [master]

GO

ALTER DATABASE [database_name]

MODIFY FILE ( NAME = N'logical_file_name', MAXSIZE = size_value)

GO

logical_file_name是你要修改的日志文件名,size_value是你想要设置的文件大小(以MB为单位)。

3. 修改MSSQL使用的端口

我们可以修改MSSQL使用的端口号,方法如下:

USE [master]

GO

sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

sp_configure 'listen all', 0;

GO

sp_configure 'port', new_port_number;

GO

RECONFIGURE;

GO

new_port_number是你想要设置的新端口号。

4. 确认服务账号权限

我们需要确认MSSQL服务账号是否有足够的权限访问MSSQL数据文件、日志文件等。

总结

在使用MSSQL时,由于各种原因,可能会遇到MSSQL启动失败的问题。我们可以通过观察错误日志并采取相应措施来解决此问题。

遇到问题时,我们应该先尝试自己解决,如果无法解决再求助于其他人或组织。

数据库标签