我在 Windows 2008 R2 机器上有一个 SQL Server 2008 R2 实例,并且 Windows 已经将近一年没有更新(我知道),昨晚应用了 Windows 补丁(大约有 100 个待处理),今天早上 SQL Server不会启动。
事件查看器中的错误是:
initrrlog:无法打开错误日志文件“D:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL1\MSSQL\Log\ERRORLOG”。操作系统错误 = 5(无法检索此错误的文本。原因:15105)。
根据许多链接(例如SQLServerCentral),我发现这似乎确实是某种权限问题。SQL Server 配置为使用的服务帐户是网络服务帐户,我在 AD 中检查过,似乎没问题,密码正确(自昨天以来,在这方面没有任何变化,当它工作时)我也试过:
在盒子上设置服务帐户本地管理员(临时)
确保服务帐户也已添加到服务器上的 SQL Server 组
向服务帐户授予对错误日志文件夹的显式权限(完全控制);然后到整个程序文件文件夹(完全控制)
我仍然得到同样的错误。
接下来,我尝试在配置管理器中更改使用的服务帐户(网络管理员 - (我知道,只是为了测试)或本地服务帐户),当应用这些更改时,我收到 WMI 提供程序错误:
WMI 提供程序错误 [调用 WMI 提供程序错误代码:0x800742a2]
我对此有点困惑,以前从未见过类似的东西。
有没有人对正在发生的事情有任何想法,或者我错过了什么可以尝试的东西?
编辑 1:
补充一点,我在搜索 WMI 错误MS Support、SQLServerCentral时检查了第一次点击,但他们似乎仍然在暗示权限问题。我已经仔细检查了上述所有与权限问题相关的内容,但看不出问题出在哪里(服务帐户现在是本地管理员(!),在框上的 SQL Server 组中,并且对所有人都有明确的完全控制权程序文件)。我想知道这个 WMI 错误是红鲱鱼,还是完全独立的问题。
编辑 2:
似乎 ERRORLOG 文件有问题阻止启动,而不是权限问题 - 不确定是什么,但可能是文件本身的损坏或某些东西,因为删除它(好吧,将它复制到其他地方)似乎已经强制 SQL服务器生成一个新的,它启动正常。我不确定错误日志文件有什么问题(我会看看我是否可以打开它并进行调查),我不知道 WMI Provider 错误是什么,现在服务在线我无法完全测试现在,我将在计划的停机时间稍后再试一次,以查看 WMI 提供程序是否出现(并酌情更新/添加为答案)。
编辑 3(最终更新):
似乎所有症状都具有误导性,在这种情况下,此类问题的常见原因(权限)不是原因,这是 ERRORLOG 文件本身的问题,删除它(重新创建)解决了问题和服务出现了。我添加了一个描述这个的答案。但是,这似乎是我能找到的唯一一种具有此原因的症状的情况,并且在许多情况下是权限,我在上面提供了链接,这个问题的答案非常详细。因此,如果您将来遇到此问题,我建议您在检查 ERRORLOG 文件本身之前按照这些步骤(首先检查权限问题)。
根据微软文章的官方解决方案是:
参考
在 Windows Server 2008 域控制器上将 SQL Server 2008 组件的服务帐户更改为非域管理员帐户时出现错误消息:“由于登录失败,服务未启动”或“WMI 提供程序错误”(Microsoft 支持)
WMI 提供程序错误 - 更改 SQL 服务帐户时(SQLServerCentral)
SQL Server 配置管理器
当您运行SQL Server 配置管理器并修改设置时,配置管理器将根据所做的配置更改添加和删除文件和目录的权限。
这就是为什么 Microsoft 声明,配置更改应始终使用SQL Server 配置管理器进行。
参考:SQL Server 配置管理器(Microsoft Docs)
要执行的实际步骤
在您的情况下,您可能已经执行了几个步骤,但顺序不正确。尝试以下操作:
如果这不起作用,您可能在 SQL Server 程序文件结构的某个级别破坏了 ACL(权限)。
SQL Server 帐户和 ACL
您的服务仍未启动,并且仍然可能是权限 (ACL) 问题?
然后您可能必须修复文件/文件夹权限。SQL Server 帐户的完整列表和所需权限在以下详尽文档中列出:
在文档中引用MSSQLServer的任何地方,都替换为您希望用来运行SQL Server (INSTANCE)的帐户。
例如,在检查文档的查看为 SQL Server 服务帐户创建的访问控制列表部分时,请确保您的YourServiceAccount有权访问:
而不是
MSSQLServer
使用YourServiceAccount
.参考:
这是最终的更新/修复:
我怀疑这个问题相当独特,并且所有指出的问题都具有误导性 - 它们都导致权限问题,结果证明不是问题。正如另一个答案所强调的那样,在大多数情况下,这似乎确实是问题所在。
在这种情况下,错误日志文件本身似乎存在问题,从该位置删除文件似乎迫使 SQL Server 在启动时生成一个新文件,然后服务正确启动。
后来我在配置管理器中测试了更改设置,并且没有 WMI Provider 错误的迹象,因此这似乎也具有误导性。这一切似乎都归结为 ERRORLOG 文件本身的问题,而不是对它的访问。我将尝试询问该 ERRORLOG 文件,看看我是否能找出问题所在(并酌情更新),但现在看来问题已解决。
概括:
在大多数情况下,这些症状可能是权限问题,原始问题中有类似问题的链接,@hot2use 的答案中有详细说明。
但是,(在可能不常见的情况下,并且在这种情况下)有时问题是错误日志文件本身的问题,而不是访问它的权限,并且删除(或只是移动到其他地方)似乎迫使 SQL Server 服务上来并生成一个新的 ERRORLOG 文件。
附加信息/链接:
来自原始帖子的类似问题的链接:-
SQLServer 中心| 支持| SQLAuthority
WMI Provider 的另一种问题(似乎有类似的症状):- MsSupport
链接到这个问题的答案,该问题详细介绍了权限错误,这通常是出现这些症状的原因(只是这次不是!):- AnswerByHot2use