因此,我有一个批处理文件,试图使用混合身份验证更改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密码的情况下更改他们的SA密码。
谢谢你提前提供帮助!
发布于 2016-02-12 16:23:46
我会阻止你现在做的事。首先,最终用户不应该拥有SA权限.如果他们确实需要SA权限,那么拒绝他们访问SA密码有什么用呢?
也就是说,您应该做的是使用windows身份验证并通过SSMS管理权限。如果这太复杂,您可以创建具有用户所需权限的SQL用户,然后让应用程序在登录到SQL (即连接字符串中)时使用该帐户。解决这个问题的方法不多,但我无法想象最终用户需要SA权限,不能拥有SA密码,并且需要定期从批处理文件中更改SA密码。这到底是怎么回事?!
https://stackoverflow.com/questions/35364780
复制相似问题