SQL SA密码更改

时间:2016-02-12 14:16:28

标签: sql-server batch-file

所以我有一个批处理文件尝试使用混合身份验证更改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密码忘记了它。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我会停止你现在正在做的事情。首先,最终用户不应该拥有SA权限。如果他们需要SA权限,那么拒绝他们访问SA密码的用途是什么?

那就是说,你应该做的是使用Windows身份验证并通过SSMS管理权限。如果这太复杂,您可以使用用户需要的权限创建SQL用户 - 然后在登录SQL时使应用程序使用该帐户(连接字符串中的那个)。很少有办法解决这个问题,但是我无法想象最终用户需要SA权限,无法获得SA密码的情况,并且您需要定期更改批处理文件中的SA密码。这到底是怎么回事?!?