根据审核员的建议,我禁用了 SQL Server 的
sa
用户已创建具有完全权限的新
sql
用户 不幸的是,密码已过期,用户在应用程序尝试中多次失败,锁定了管理员用户(密码策略)
现在,我陷入了困境:
sa
- 禁用sql
用户 - 被锁定我在 SQL Server 中只有一个本地 Windows 用户,无权修改
sa
或 sql
用户
感谢上帝,我们有一个物理集群,我们转移了,但我应该怎么解决这个问题:
提前致谢
我以前也遇到过这种情况,幸运的是,当您拥有物理服务器的本地管理员访问权限时,很容易解决。 基本上,您需要以单用户模式启动服务,连接 Windows 身份验证,然后更改密码或使用 sysadmin 创建临时帐户。
分步说明: https://msdn.microsoft.com/en-us/library/dd207004.aspx
进入一个新环境,有时我会发现没有人知道密码的情况。一旦我成为服务器上的本地管理员,我就会使用以下过程。
以下是我用来获取访问权限的命令。第一个用于默认实例,第二个用于命名实例。
您可以创建一个批处理文件,我将其命名为unlocksql.bat,并将内容放入批处理文件中,然后在您被锁定的服务器上运行它。
默认实例:
net stop mssqlserver
net start mssqlserver /mSQLCMD
sqlcmd -Q "if not exists(select * from sys.server_principals where name='BUILTIN\administrators') CREATE LOGIN [BUILTIN\administrators] FROM WINDOWS;EXEC master..sp_addsrvrolemember @loginame = N'BUILTIN\administrators', @rolename = N'sysadmin'"
net stop mssqlserver
net start mssqlserver
sqlcmd -Q "if exists( select * from fn_my_permissions(NULL, 'SERVER') where permission_name = 'CONTROL SERVER') print 'You are a sysadmin.'"
命名实例:
net stop mssql$sqlexpress
net start mssql$sqlexpress /mSQLCMD
sqlcmd -S (local)\sqlexpress -Q "if not exists(select * from sys.server_principals where name='BUILTIN\administrators') CREATE LOGIN [BUILTIN\administrators] FROM WINDOWS;EXEC master..sp_addsrvrolemember @loginame = N'BUILTIN\administrators', @rolename = N'sysadmin'"
net stop mssql$sqlexpress
net start mssql$sqlexpress
sqlcmd -S (local)\sqlexpress -Q "if exists( select * from fn_my_permissions(NULL, 'SERVER') where permission_name = 'CONTROL SERVER') print 'You are a sysadmin.'"
解决SA用户每天早上被锁的问题
安全-->登录-->右键SA用户-->属性-->取消勾选 强制密码策略--确定