SQL Server 2012:密码丢失的紧急情况
如果发生意外情况,而您又忘记了 SQL Server 密码,可以通过一些方法返回系统。
Saleem Hakani
你是一份自豪和受信任的 DBA 在您的组织。 您负责维护和更新您的生产环境中运行 SQL 服务器上的几个重要服务。 您已经决定将执行以下步骤 — — 这是一种任何固体的 DBA 将采取的最佳做法 — — 以确保您的公司从任何未经授权的访问的 SQL 服务器:
- 您已经从 SQL Server 登录删除任何及所有的内置管理员帐户。
- 您已经删除 (除系统管理员或 SA) 是 SYSADMIN 服务器角色 (包括任何 Windows 帐户和 SQL Server 登录名) 的一部分的所有用户。
- 您已将 SA 帐户密码设置为极其复杂,这将是难以令人猜测或记住的东西。
- 对于 SQL Server 上的日常操作,您可以使用您的域用户帐户,已对用户数据库的数据库所有者 (DBO) 权限,但不会在系统上具有系统管理员特权。
- 没有记录任何地方的 SA 密码防止其他人知道它。 毕竟它不是一个好的做法,以记录密码。
因为您已经设置的 SA 密码如此复杂 — — 与您一直使用您的域帐户而不是 SA 帐户为所有您日常与数据库相关的 SQL 服务器的活动 — — 意想不到的事发生了。 您忘记了您的 SQL 服务器的 SA 密码。
你是唯一的人知道您的团队中的 SA 密码。 现在您不记得它是什么,您需要对您生产 SQL Server 框进行一些服务器级别的配置更改。 你打算现在做什么? 以下是一些选项:
- 请尝试以 SA 登录与所有可能的密码,你有你的头脑中。
- 查找您的计算机硬盘上或电子邮件 (您可能保存了它在一些文件中,这是不好的做法,但可以帮助) 中的 SA 密码。
- 尝试还原 Master 数据库从数据库备份。 这不会在长期帮助,因为你仍会遇到同样的问题,如果您不记得的 SA 密码。
- 重新生成主数据库。 这是只稍有帮助的因为您将丢失所有系统级和服务器级配置和设置包括登录、 权限和服务器级别的任何对象。
- 重新安装 SQL 服务器 2012年和附加所有用户数据库。 这可能不工作,因为您可能会遇到同样的问题,你会经历与重建主数据库。
假定所有您尝试登录到使用 SA 密码的系统都已失败。 现在是时候为你呼吁增援部队:Microsoft 产品支持服务团队。 这里是他们可能会告诉你要做什么:
这是后门向 SQL 服务器 2012 将帮助您获得您的 SQL 服务器生产 SYSADMIN 进入。 然而,这意味着您的 Windows 帐户必须是在 SQL 服务器 2012年服务正在运行的 Windows 服务器上的本地管理员组的成员。
SQL Server 允许连接到 SQL Server 具有系统管理员权限的本地管理员组的任何成员。
在这里是要采取控制您 SQL 服务器 2012 年作为一个 SA 的步骤:
1. | 启动 SQL 服务器 2012年实例使用单用户模式下从命令提示符启动命令提示符以管理员的身份。 您还可以启动 SQL 服务器 2012 使用最少的配置,还将 SQL Server 在单用户模式下。 |
2. | 从命令提示符 (以管理员身份运行),请键入:SQLServr.Exe –m (或 SQLServr.exe –f) 和启动 SQL 服务器 2012年数据库引擎。 请确保您没有关闭此命令提示符窗口。 您可以在您的环境路径的 Binn 文件夹中查找 SQLServr.exe。 如果你没有一个 SQL 服务器 2012 Binn 文件夹在您环境的路径中,总是可以导航到您的 SQL 服务器 2012年机器的 Binn 文件夹。 通常的 Binn 文件夹位于 C:\Program Files\Microsoft SQL Server\MSSQL11。MSSQLSERVER\MSSQL\Binn >。 |
3. | 一次 SQL 服务器 2012 服务已开始在单用户模式下或最小配置,您现在可以打开另一个命令行窗口以管理员的身份和使用的 SQLCMD 命令,从命令提示符来连接到 SQL 服务器 2012年实例: |
- SQLCMD –S <Server_Name\Instance_Name>
- Example: SQLCMD –S "SALEEMHAKANI"
-
你将现在登录到 SQL Server。 请记住,您在 SALEEMHAKANI SQL 服务器 2012年实例上的管理员身份登录的。 | |
4. | 一旦您正在登录到 SQL 服务器 2012 从命令提示符处使用 SQLCMD,您可以创建一个新的帐户和任何服务器级别权限授予它的选择。 在 SQL 服务器 2012 称为"Saleem_SQL"中创建新的登录名,然后将此帐户添加到 SA 服务器角色。 若要创建从命令提示符执行步骤 3 之后的新的登录名,使用以下方法: |
- 1> CREATE LOGIN '<Login_Name>' with PASSWORD='<Password>'
- 2> GO
-
下面是一个示例: |
- 1> CREATE LOGIN SQL_SALEEM WITH PASSWORD='$@L649$@m'
- 2> GO
-
一旦您已经创建了新的登录"SQL_SALEEM",添加此登录到 SQL 服务器 2012年实例上的 SA 服务器角色。 从相同的命令提示符窗口中,执行以下语句: |
- 1> SP_ADDSRVROLEMEMBER '<Login_Name>','SYSADMIN'
- 2>go
-
要向 SYSADMIN 服务器角色添加现有的登录,请执行以下语句: |
- 1> SP_ADDSRVROLEMEMBER '<LOGIN_NAME>','SYSADMIN'
- 2> GO
-
下面是一个示例: |
- 1> SP_ADDSRVROLEMEMBER SQL_SALEEM,'SYSADMIN'
- 2> GO
-
以前的操作会照顾授予的"SQL_SALEEM"登录系统管理员权限。 | |
5. | 一旦你成功地执行了这些步骤下, 一步是停止和启动 SQL Server 服务使用定期启动选项。 这一次您不需要 –f 或 –m。 |
6. | 登录到 SQL 服务器 2012年管理工作室。 您还可以从命令提示符下使用的"SQL_SALEEM"帐户和其各自的密码登录。 您现在可以 SA 访问您的 SQL 服务器 2012年实例。 你现在可能重置的 SA 密码,并采取你生产的控制 SQL Server 框。 这是很正常的事,不时忘记了密码,但这并不意味着它是较少的麻烦。 这些紧急措施应得到您启动和运行无太多置乱或停机时间。 |