问题出现
当我们在使用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启动失败的问题。我们可以通过观察错误日志并采取相应措施来解决此问题。
遇到问题时,我们应该先尝试自己解决,如果无法解决再求助于其他人或组织。