所以我有一个批处理文件尝试使用混合身份验证更改sql安装的SA密码:
:WINT
CLS
SET /P COMPUTERNAME=Enter the name of your Server:
SET /P INSTANCE=Enter the name of your SQL instance:
SET /P NEWPASS=Enter your new password:
sqlcmd -S "%COMPUTERNAME%\%INSTANCE%" -Q "[master].[sys].[xp_instance_regwrite] @rootkey = N'HKEY_LOCAL_MACHINE' ,@key = N'Software\Microsoft\MSSQLServer\MSSQLServer' ,@value_name = N'loginMode' ,@type = N'REG_DWORD' ,@value = 2;"
sqlcmd -S "%COMPUTERNAME%\%INSTANCE%" -Q "alter login sa with password='%NEWPASS%'"
sqlcmd -S "%COMPUTERNAME%\%INSTANCE%" -Q "alter login sa enable"
net stop MSSQL$%INSTANCE% && net start MSSQL$%INSTANCE%
sqlcmd -b
PAUSE
IF %ERRORLEVEL%==1 GOTO END2
ELSE IF GOTO END1
我的问题是这个批处理文件似乎是2008 R2特定的,因为这是我能够让它正常工作的唯一环境。 所以我的问题确实如此;有没有人知道创建批处理文件的方法,该文件将启用混合身份验证,然后更改任何版本的Windows(server / enterprise / home / pro)的SA密码?
我需要它在没有用户知道他们的SA密码是什么的情况下这样做(假设他们至少在本地管理员组内),因为这个批次的目的是让用户能够更改他们的SA密码忘记了它。
提前感谢您的帮助!
答案 0 :(得分:1)
我会停止你现在正在做的事情。首先,最终用户不应该拥有SA权限。如果他们需要SA权限,那么拒绝他们访问SA密码的用途是什么?
那就是说,你应该做的是使用Windows身份验证并通过SSMS管理权限。如果这太复杂,您可以使用用户需要的权限创建SQL用户 - 然后在登录SQL时使应用程序使用该帐户(连接字符串中的那个)。很少有办法解决这个问题,但是我无法想象最终用户需要SA权限,无法获得SA密码的情况,并且您需要定期更改批处理文件中的SA密码。这到底是怎么回事?!?