当系统管理员被锁定时连接到 SQL Server

本主题介绍如何以系统管理员身份重新获得对 SQL Server 数据库引擎的访问权限。 由于以下原因之一,系统管理员可能会失去对 SQL Server 实例的访问权限:

  • 所有属于 sysadmin 固定服务器角色成员的登录名都已被错误删除。

  • 所有属于 sysadmin 固定服务器角色成员的 Windows 组都被错误地删除。

  • 属于 sysadmin 固定服务器角色的登录账户是那些已离开公司或当前无法使用的人员的账户。

  • sa 帐户已禁用,或者没有人知道密码。

重新获得访问权限的一种方法是重新安装 SQL Server 并将所有数据库附加到新实例。 此解决方案非常耗时;若要恢复登录名,可能需要从备份还原 master 数据库。 如果 master 数据库的备份较旧,则它可能没有任何信息。 如果 master 数据库的备份较新,则其登录名可能与上一个实例相同;因此,管理员仍将被锁定。

决议

使用 -m-f 选项在单用户模式下启动 SQL Server 的实例。 然后,计算机本地 Administrators 组的任何成员都可以作为 sysadmin 固定服务器角色的成员连接到 SQL Server 实例。

注释

在单用户模式下启动 SQL Server 实例时,请先停止 SQL Server 代理服务。 否则,SQL Server 代理可能会首先连接,并阻止你作为第二个用户进行连接。

-m 选项用于 sqlcmd 或 SQL Server Management Studio 时,可以限制与指定客户端应用程序的连接。 例如, -m“sqlcmd” 将连接限制为单个连接,并且该连接必须将其标识为 sqlcmd 客户端程序。 当您正在单用户模式下启动 SQL Server 并且未知的客户端应用程序正在占用这个唯一的可用连接时,使用此选项。 若要通过 Management Studio 中的查询编辑器进行连接,请使用 -m“Microsoft SQL Server Management Studio - Query”。

重要

请勿使用此选项作为安全功能。 客户端应用程序提供客户端应用程序名称,并且提供假名称来作为连接字符串的一部分。

有关如何在单用户模式下启动 SQL Server 的分步说明,请参阅“配置服务器启动选项”(SQL Server Configuration Manager)。

步骤By-Step 的说明

以下说明介绍了连接到在 Windows 8 或更高版本上运行的 SQL Server 2014 的过程。 为早期版本的 SQL Server 或 Windows 提供轻微调整。 这些说明必须在以本地管理员组的成员身份登录到 Windows 时执行,并且假定 SQL Server Management Studio 安装在计算机上。

  1. 从“开始”页开始,启动 SQL Server Management Studio。 在 “视图 ”菜单上,选择“ 已注册的服务器”。 (如果服务器尚未注册,请右键单击 “本地服务器组”,指向 “任务”,然后单击“ 注册本地服务器”。

  2. 在“已注册的服务器”区域中,右键单击服务器,然后单击 “SQL Server 配置管理器”。 这应请求以管理员身份运行的权限,然后打开 Configuration Manager 程序。

  3. 关闭 Management Studio。

  4. 在 SQL Server 配置管理器的左窗格中,选择“SQL Server 服务” 。 在右窗格中,查找 SQL Server 实例。 (SQL Server 的默认实例包括在计算机名称后的 (MSSQLSERVER) 。 命名实例显示为大写,名称与在“已注册的服务器”中的名称相同。) 右键单击 SQL Server 实例,然后单击“ 属性”。

  5. 在“ 启动参数 ”选项卡上的“ 指定启动参数 ”框中,键入 -m 并单击 Add。 (这是短划线后跟小写字母 m。)

    注释

    对于某些早期版本的 SQL Server,没有 “启动参数 ”选项卡。在这种情况下,在“ 高级 ”选项卡上,双击“ 启动参数”。 参数显示在很小的窗口中。 请注意不要更改任何现有参数。 最后,添加新参数 ;-m ,然后单击 OK。 (这是一个分号,后跟短划线和小写字母 m。)

  6. 单击 OK并重启消息后,右键单击服务器名称,然后单击“ 重启”。

  7. SQL Server 重启后,服务器将处于单用户模式。 确保 SQL Server Agent 没有在运行。 如果已启动,它将占用您唯一的连接。

  8. 在 Windows 8 开始屏幕上,右键单击 Management Studio 的图标。 在屏幕底部,选择“ 以管理员身份运行”。 (这会将管理员凭据传递给 SSMS。

    注释

    对于早期版本的 Windows, “以管理员身份运行 ”选项显示为子菜单。

    在某些配置中,SSMS 将尝试建立多个连接。 由于 SQL Server 处于单用户模式,因此多个连接将失败。 您可以选择以下其中一个操作来执行。 执行下列操作之一:

    1. 使用 Windows 身份验证(包括管理员凭据)与对象资源管理器连接。 依次展开“安全性”和“登录名”,然后双击你自己的登录名 。 在 “服务器角色 ”页上,选择 sysadmin,然后单击 OK

    2. 使用 Windows 身份验证(包括您的管理员凭据)与“查询窗口”连接,而非与对象资源管理器连接。 如果未通过对象资源管理器进行连接,则只能以这种方式连接。执行以下代码以添加一个新的 Windows 身份验证登录,该登录是 sysadmin 固定服务器角色的成员。 以下示例添加名为 CONTOSO\PatK的域用户。

      CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;  
      ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];  
      
    3. 如果 SQL Server 正在混合身份验证模式下运行,请使用 Windows 身份验证(包括您的管理员凭据)与“查询窗口”连接。 执行以下代码来创建新的 SQL Server 身份验证登录名,该登录名属于固定服务器角色 sysadmin 的成员。

      CREATE LOGIN TempLogin WITH PASSWORD = '************';  
      ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;  
      

      警告

      将************替换为强密码。

    4. 如果 SQL Server 正在混合身份验证模式下运行且你要重置 sa 帐户的密码,则请使用 Windows 身份验证(包括你的管理员凭据)与“查询窗口”连接。 使用以下语法更改 sa 帐户的密码。

      ALTER LOGIN sa WITH PASSWORD = '************';  
      

      警告

      将************替换为强密码。

  9. 以下步骤现在将 SQL Server 更改回多用户模式。 关闭 SSMS。

  10. 在 SQL Server 配置管理器的左窗格中,选择“SQL Server 服务” 。 在右窗格中,右键单击 SQL Server 实例,然后单击“ 属性”。

  11. “启动参数”选项卡上的“现有参数”框中,选择-m并单击。Remove

    注释

    对于某些早期版本的 SQL Server,没有 “启动参数 ”选项卡。在这种情况下,在“ 高级 ”选项卡上,双击“ 启动参数”。 参数在一个非常小的窗口中打开。 你删除之前添加的;-m元素,然后单击OK

  12. 右键单击服务器名称,然后单击“ 重启”。

现在,你应该能够正常连接到其中一个帐户,该帐户现已成为固定服务器角色的成员sysadmin

另请参阅

在单用户模式下启动 SQL Server
数据库引擎服务启动选项