AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 49677
Accepted
Tulains Córdova
Tulains Córdova
Asked: 2013-09-12 08:53:28 +0800 CST2013-09-12 08:53:28 +0800 CST 2013-09-12 08:53:28 +0800 CST

没有 SA 密码。没有 SQL Server Management Studio。没有操作系统身份验证[重复]

  • 772
这个问题在这里已经有了答案:
你如何重置sa密码? (2 个回答)
5年前关闭。

我有这个问题。

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

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

在此处输入图像描述

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

sql-server sql-server-2005
  • 1 1 个回答
  • 21653 Views

1 个回答

  • Voted
  1. Best Answer
    Aaron Bertrand
    2013-09-12T09:06:32+08:002013-09-12T09:06:32+08:00

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

    • 下载 SQL Server 管理工作室

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

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


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

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

    • 没有系统管理员帐户时如何在 SQL Server 2008 中将系统管理员添加到用户

    我在MSSQLTips.com上也有一个小费可以解决这个问题:

    • 恢复对 SQL Server 实例的访问

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

    PsExec -s -i "C:\...\Ssms.exe"
    

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

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

      在此处输入图像描述

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

      在此处输入图像描述

    • 添加您自己的登录sysadmin名 - 右键单击​​ Logins, New Login... 输入您的登录名(在表单中DOMAIN\username)然后移动到 Server Roles 选项卡并选中该sysadmin框并单击 OK:

      在此处输入图像描述

    • (或者,如果您的登录名已经列出,请右键单击“属性”,并确保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\ImagePath为指向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];"
      
    3. 尝试再次启动 SQL VSS Writer 服务(你会得到一个错误;没关系)。

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

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

    • 有关恢复对 SQL Server 实例的访问的更多信息

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


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

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

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

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

    • https://dbatools.io/functions/other/reset-dbaadmin/

    安全不是这里的主要问题

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

    • 22

相关问题

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

  • 从 SQL Server 2008 降级到 2005

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    授予用户对所有表的访问权限

    • 5 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve