由于登录失败,SQL Server 2012 无法启动
Posted
技术标签:
【中文标题】由于登录失败,SQL Server 2012 无法启动【英文标题】:SQL Server 2012 can't start because of a login failure 【发布时间】:2012-07-08 14:35:05 【问题描述】:我最近在全新的 Windows 7 安装上安装了 Microsoft SQL Server 2012,但每当我想运行服务器时,都会收到以下错误:
错误 1069:由于登录失败,服务没有启动。
以下用户被配置为启动服务:NT Service\MSSQL$SQLEXPRESS
我该如何解决这个问题?
【问题讨论】:
Windows 事件查看器是否提供更多信息? @acraig5075:是的!它说,该帐户没有“作为服务登录”权限。 @xsl - 请考虑根据下面的讨论更改此问题的已接受答案,然后该答案的作者可以撤回它。谢谢! 如果您将计算机加入域,可能会发生这种情况。下面关于在服务 mmc 中清除密码的答案修复了它。 不过,这只是暂时修复它。 【参考方案1】:虽然(“以系统方式运行”)有效,但应告知人们这意味着从最低权限类型的帐户变为拥有世界上所有权限的帐户。这不是推荐的设置最佳实践或安全方面的建议。
如果您知道自己在做什么,并且知道您的 SQL Server 将始终在隔离环境中运行(即不在酒店或机场 wifi 上),那可能没问题,但这会创建一个非常真实的攻击向量,可以完全破坏机器如果在开放的互联网上。
这似乎是微软的一个错误,人们应该意识到发布的解决方法的含义。
【讨论】:
MSSQLServer 2008 使用 SYSTEM(至少在我的安装中),但 2012 不再使用。我必须以 SYSTEM 身份运行 MS SQL Server,因为另一个服务(必须以 SYSTEM 身份运行)自动登录到 SQL Server 实例。 正确,但是,抱歉,这不是答案。正如@xsl 所说,这是一条评论。【参考方案2】:此问题的答案可能与完全成熟的 SQL Server (NTService\MSSQLSERVER) 的问题相同,即重置密码。讽刺的是,没有密码。
步骤是:
右键单击Services mmc中的Service 点击属性 点击登录标签 密码字段中似乎有条目... 清空两个密码字段 点击“确定”这应该重新授予对服务的访问权限,并且应该重新启动。奇怪吗?
注意:如果问题在几个小时或几天后再次出现,那么您可能有一个组策略覆盖了您的设置,并且它马上又来了。
【讨论】:
这个答案对我有用。将它们屏蔽掉——然后说该服务具有适当的权限,然后所有依赖服务都能够启动。 有时需要在字段中输入正确的密码。例如,当您更改 Windows 登录密码时。 为什么这行得通?即使组策略将其取消,我也可以通过服务隐式授予“作为服务登录”权限,这是没有意义的。如何防止组策略在重启时破坏帐户? 我在SQL Server Developer Edition之后安装VS 2019时出现这种情况 奇怪的是,这还是个问题吧!【参考方案3】:这发生在我身上。域上的一项策略正在取消 SQL Server 用户帐户的“作为服务登录”权限。您可以使用 JLo 的解决方案来解决此问题,但没有专门解决组策略问题,并且它会在下次在机器上刷新组策略时返回。
对我来说造成问题的具体政策是: 在计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 用户权限分配下:作为服务登录
您可以通过从命令行运行命令“rsop”来查看哪些策略正在应用于您的计算机。按照上面列出的策略路径,您将看到其当前值以及设置该值的 GPO。
【讨论】:
你如何解决它?您必须是组策略管理员才能更改它吗? 必须让管理组策略的 IT 团队对其进行更改。您可以在本地向用户授予“作为服务运行”权限,但每次发生组策略刷新时(每隔几个小时)它都会被清除。如果您需要一些工作直到可以修复策略,您可以设置一个计划任务来触发“ntrights”工具以重新授予权限,使用事件作为触发器 --- 组策略刷新事件是 Log:系统/来源:组策略/事件 ID 1502。 在 Windows 10 中哪里可以找到这些设置?电脑配置? 这是在组策略中。在开始/搜索中键入“组策略”,您将找到“编辑组策略”选项。 (我认为它不适用于 Windows 10 Home,需要 Pro 或更高版本。)【参考方案4】:一种可能是在安装sql server data tools Bi的时候, 虽然已经设置了 sql server。
解决方案:- 1.只需用设置好的实例修复sql server
如果解决方案不起作用, 比你花时间干预 services.msc 更值得
【讨论】:
【参考方案5】:我遇到了类似的问题,通过以下方式解决:
-
在 Services.MSC 中单击登录选项卡并添加具有最低权限和密码的用户(在引发登录错误的服务上)
通过启动 Sql Server 以管理员身份运行
如果用户是域用户,则使用域用户名和密码
【讨论】:
【参考方案6】:简答: 在您的 SQL Server 上安装远程服务器管理工具(它是 Windows Server 的一个可选功能),重新启动,然后运行 SQL Server 配置管理器,访问登录帐户以“NT Service...”开头的每个服务的服务设置,清除密码字段并重新启动服务。在幕后,SQL Server 配置管理器将为这些虚拟帐户分配作为服务登录的权限,然后您就可以开始使用了。
tl;博士;
windows 域的默认设置和 SQL Server 2012 的默认安装之间存在一个 catch-22。
如上所述,默认的 Windows 域设置确实会阻止您通过本地计算机上的组策略编辑定义“作为服务登录”权限(至少通过 GUI;如果您安装 Powershell ActiveDirectory 模块(通过远程服务器管理工具下载)您可以通过脚本来完成。
而且,默认情况下,SQL Server 2012 安装程序在“虚拟帐户”中运行服务(NT Service\ 前缀,例如 NT Service\MSSQLServer。这些类似于本地计算机帐户,而不是域帐户,但您仍然无法分配如果您的服务器已加入域,则它们以服务权限登录。SQL Server 安装程序会在安装时尝试分配权限,SQL Server 配置管理工具同样会在您更改登录帐户时尝试分配权限。
漂亮的 catch-22 是这样的:SQL Server 工具依赖于 RSAT 的(某些组件)将登录分配为服务权限。如果您的成员服务器上没有安装 RSAT,SQL Server 配置管理器会在尝试应用设置时静默失败(尽管它运行了所有华而不实的安装前验证),并且您最终会得到无法启动的服务。
我在 SQL Server 和 Virtual Account 文档的暴风雪中找到的这个要求的一个提示是:https://msdn.microsoft.com/en-us/library/ms143504.aspx#New_Accounts,搜索 RSAT。
【讨论】:
【参考方案7】:我不知道这是一个多么好的解决方案,但是在没有成功地遵循这个问题的其他一些答案之后,我解决了将服务 MSSQLSERVER 的连接用户设置为“本地服务”的问题。
注意:我使用的是 SQL Server 2017。
【讨论】:
以上是关于由于登录失败,SQL Server 2012 无法启动的主要内容,如果未能解决你的问题,请参考以下文章
金碟 ERP SQL Server (MSSQLSERVER) 服务启动失败
SQL server无法启动服务,提示“错误1069: 由于登录失败而无法启动服务”