没有 SA 密码。没有 SQL Server Management Studio。无操作系统身份验证

Tul*_*ova 7 sql-server-2005 sql-server

我有这个问题。

我需要使用 SA 帐户在 MS SQL 数据库上执行一些管理任务。

  • 未设置操作系统身份验证。
  • 未安装 SQL Server Manager Manager Studio。
  • 我没有其他管理员数据库帐户。
  • 我确实有权访问 Windows 管理员帐户
  • 数据库服务器上安装的唯一工具如下所示:

在此处输入图片说明

如何激活操作系统身份验证以便我可以登录数据库并重置 SA 密码?

Aar*_*and 22

好吧,您可以从安装 Management Studio 开始。(一旦您有权访问实例,您还打算如何执行维护任务?)我推荐最新版本的 Management Studio,它功能齐全,可以很好地管理 2005 实例,并且完全没有任何许可要求。您可以从这里下载:

(如果您的操作系统是 32 位,您应该先修复它;如果不能,您可以在本页底部下载 SSMS 2014 SP1 的 32 位版本。)

安装 Management Studio 后,下一步将取决于您的 SQL Server 版本,以及您是否有能力关闭 SQL Server 服务以建立新凭据。这里的前两种方法不需要重启实例:


对于 SQL Server 2005、2008 和 2008 R2 实例

您可以使用该NT AUTHORITY\SYSTEM帐户(或其他后门方法)进行连接。这里的一些答案中有一些细节:

我在MSSQLTips.com上也有解决这个问题的提示:

本质上,您从 Microsoft下载PSExec,然后在安装后使用它来启动 Management Studio:

PsExec -s -i "C:\...\Ssms.exe"
Run Code Online (Sandbox Code Playgroud)

这将连接为NT AUTHORITY\SYSTEM并允许您在对象资源管理器中执行操作,例如:

  • 将实例更改为 SQL Server 和 Windows 身份验证模式- 右键单击​​服务器名称,点击属性,如果当前仅设置为 Windows,则更改单选按钮:

    在此处输入图片说明

  • 设置sa帐户的密码- 展开安全,展开登录,右键单击sa并点击属性,在结果对话框中将有两个密码输入字段:

    在此处输入图片说明

  • 添加您自己的登录名sysadmin- 右键单击​​登录名,新建登录名...输入您的登录名(在表单中DOMAIN\username),然后移至服务器角色选项卡并选中该sysadmin框并单击确定:

    在此处输入图片说明

  • (或者,如果您的登录名已列出,请右键单击“属性”,并确保sysadmin在“服务器角色”下选中)


对于 SQL Server 2012 和更新的实例

从 SQL Server 2012 开始,NT Authority\SYSTEM默认情况下不再授予 SQL Server 权限。因此,Argenis Fernandez 详细介绍了在这些较新版本中执行此操作的另一种方法:

  1. 如果 SQL VSS Writer 服务正在运行,请停止它,并暂停所有可能依赖它的维护计划或第 3 方备份软件。

  2. 打开regedit.exe并更改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePathto的值指向SQLCMD.exe,它将在C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn. 编辑后,注册表值应如下所示(抱歉滚动):

    "C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 尝试再次启动 SQL VSS Writer 服务(您将收到错误消息;没关系)。

  4. 您现在应该可以sysadmin使用YourDomain\YourUserName. 因此,停止 SQL VSS Writer 服务,修复注册表,然后重新启动该服务(如果您需要它运行,或者它在您启动之前正在运行)。

我在第二个技巧中更详细地介绍了这一点:

虽然当我写那个提示时,我使用了一种更麻烦的方法来制作副本SQLCMD.exe和替换sqlwriter.exe-SQLCMD.exe直接指向服务要容易得多。


如果您有能力关闭 SQL Server 服务

Microsoft 提供了一条官方支持的路径,需要在单用户模式下重新启动实例:

dbatools.io 中还有一个函数,用于管理 SQL Server 的 Powershell 解决方案,称为Reset-DbaAdmin


安全不是这里的主要问题

我看到很多人呼吁微软“修复”这些所谓的“漏洞”。这些是恢复对您合法拥有的 SQL Server 实例的访问权限的有效方法。它们都需要在 SQL Server 所在的物理主机上提升权限;正如我对几个人所说的那样,如果您不希望开发人员弄乱 SQL Server 安装,请不要让他们成为管理员。

  • @user1598390 因为在安装数据库引擎时,管理工具是可选的。通常不会安装它们,因为服务器上不应该有客户端工具,应该远程管理;也就是说,我个人的偏好是将它们安装在那里,因为拥有它们而不需要它们比需要它们而不拥有它们更好。为什么在你的店里这样做,我们不知道,你得问他们,对不起。 (4认同)