由于登录失败,SQL Server 2012无法启动


77

我最近在全新的Windows 7安装上安装了Microsoft SQL Server 2012,但是每当我要运行服务器时,都会出现以下错误:

错误1069:由于登录失败,服务未启动。

配置了以下用户以启动服务: NT Service\MSSQL$SQLEXPRESS

我该如何解决这个问题?


1
Windows事件查看器是否提供更多信息?
acraig5075'7

1
@ acraig5075:是的!它说,该帐户没有“作为服务登录”权限。
xsl 2012年

3
@xsl-请考虑按照下面的讨论更改此问题的可接受答案,然后该答案的作者可以撤回它。谢谢!
killthrush 2014年

如果您将计算机加入域,则可能会发生这种情况。以下有关清除服务mmc中密码的答案可以解决该问题。
Brain2000 '18

但是,这只能暂时修复它。
Newclique

Answers:


214

答案可能与完整的SQL Server(NTService \ MSSQLSERVER)问题相同,这是重置密码。具有讽刺意味的是,没有密码。

步骤如下:

  • 右键单击Services mmc中的服务
  • 单击属性
  • 单击登录选项卡
  • 密码字段中似乎包含条目...
  • 清空两个密码字段
  • 点击“确定”

这应重新授予对该服务的访问权限,并应重新启动。奇怪的?

注意:如果问题在几个小时或几天后再次出现,则可能是您有一个组策略,该组策略将覆盖您的设置,并且该策略即将到来并立即消失。


7
这个答案对我有用。清空它们-然后说该服务具有适当的权限,然后所有依赖的服务都可以启动。
tresstylez 2014年

3
有时,必须在字段中输入正确的密码。例如,当您更改Windows登录密码时。
Yster

7
为什么这样做?我可以通过服务隐式授予“作为服务登录”权限是没有意义的,即使组策略将其删除。如何防止组策略在重新启动时破坏帐户?
wrschneider

18

这发生在我身上。该域上的策略剥夺了SQL Server用户帐户的“作为服务登录”权限。您可以使用JLo的解决方案解决此问题,但不能专门解决组策略问题,下次在计算机上刷新组策略时,它将返回。

引起我问题的特定策略是:在“计算机配置”下,依次单击“ Windows设置”,“安全设置”,“本地策略”,然后单击“用户权限分配:作为服务登录”。

通过从命令行运行命令“ rsop”,可以查看正在将哪些策略应用到您的计算机。遵循上面列出的策略的路径,您将看到其当前值以及由哪个GPO设置该值。


您如何解决?您必须是组策略管理员才能更改它吗?
wrschneider

1
必须让管理组策略的IT团队对其进行更改。您可以在本地为用户授予“作为服务运行”权限,但是每次刷新组策略时(每隔几个小时),该权限就会被清除。如果在固定该策略之前需要进行一些工作,则可以设置一个计划的任务来触发“ ntrights”工具,以使用事件作为触发器来重新授予特权-组策略刷新事件为Log:系统/源:组策略/事件ID1502。–
亚伦

11

当(“以系统身份运行”)有效时,应告知人们这意味着从最低权限类型的帐户转到拥有世界上所有权限的帐户。这不是推荐的设置最佳实践或安全性方面的建议。

如果您知道自己在做什么,并且知道您的SQL Server将始终在隔离的环境中运行(即不在酒店或机场wifi上),那可能就可以了,但这会创建一个非常真实的攻击媒介,如果在打开状态下可能会完全破坏计算机互联网。

这似乎是Microsoft的错误,人们应该意识到发布的变通办法的含义。


MSSQLServer 2008使用SYSTEM(至少在我的安装中使用),但2012不再使用。我必须将MS SQL Server作为SYSTEM运行,因为另一项服务(该HAD作为SYSTEM运行)自动登录到SQL Server实例。
尼尔·怀特曼

3
正确,但抱歉,这不是答案。正如@xsl所说,这是一条评论。

4

简短的答案:
在SQL Server上安装远程服务器管理工​​具(这是Windows Server的可选功能),重新启动,然后运行SQL Server配置管理器,访问其登录帐户以“ NT服务”开头的每个服务的服务设置。 。”,清除密码字段并重新启动服务。在幕后,SQL Server Config管理器将为这些虚拟帐户分配“作为服务登录”权限,然后您就可以使用了。

tl; dr;

Windows域的默认设置和SQL Server 2012的默认安装之间存在陷阱22。

如上所述,默认的Windows域设置确实会阻止您通过本地计算机上的组策略编辑(至少通过GUI)定义“作为服务登录”;如果您安装Powershell ActiveDirectory模块(通过远程服务器管理工​​具下载) ),您可以通过编写脚本来实现。

并且,默认情况下,SQL Server 2012安装程序在“虚拟帐户”(NT Service \前缀,例如NT Service \ MSSQLServer)中运行服务。这些服务类似于本地计算机帐户,而不是域帐户,但是您仍然无法分配它们登录如果您的服务器已加入域,则作为服务权限; SQL Server安装程序会在安装时尝试分配权限,而SQL Server配置管理工具同样会在您更改登录帐户时尝试分配权限。

美丽的22点是:SQL Server工具依赖RSAT(的某些组件)将登录分配为服务权限。如果您没有在成员服务器上安装RSAT,则SQL Server Config Manager会静默地尝试应用该设置(尽管运行了所有花哨的预安装验证)而失败,并且最终您将获得无法启动的服务。

我可以在SQL Server和虚拟帐户doc的暴风雪中找到的这一要求的一个提示是:https : //msdn.microsoft.com/zh-cn/library/ms143504.aspx#New_Accounts,搜索RSAT 。


2

我有一个类似的问题,该问题已通过以下解决:

  1. 在Services.MSC中,单击“登录”选项卡,然后添加具有最低特权和密码的用户(在引发登录错误的服务上)
  2. 通过启动Sql Server以管理员身份运行

如果用户是域用户,请使用域用户名和密码


1

一种可能性是,当已经设置了sql server时,安装了sql server数据工具Bi。

解决方案:-1.只需使用设置的实例修复SQL Server

如果解决方案不起作用,那么值得您花时间与services.msc进行干涉

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.