工作需要,Server和SQL Server的密碼需要每月變化,記錄一下實現思路。
修改Windows密碼
可以用以下命令來實現:
net user [YourName] [YourPassword]
修改SQL Server密碼
首先判斷用戶是否存在,如果存在就修改,如果不存在就創建:
IF EXISTS (SELECT 1 FROM MASTER.DBO.SYSXLOGINS WHERE NAME=N'{0}')
BEGIN
ALTER LOGIN [YourName] WITH PASSWORD=N'YourPassword'
END
ELSE
BEGIN
CREATE LOGIN [YourName] WITH PASSWORD=N'YourPassword', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
EXEC master..sp_addsrvrolemember @loginame = N'YourName', @rolename = N'sysadmin'
END
GO
思路實現:
由於要批量修改服務器,所以用VS寫個小程序來實現:
1. 建立密碼錶,預先設定或者自動生成密碼
2. 用Process 調用net.exe, 拼接參數來修改windows密碼,獲取執行後結果,然後記錄到日誌中
3. 通過註冊表來枚舉出服務器上安裝的SQL Instance,然後循環連接執行SQL,並捕捉錯誤記錄到日誌中。
SQL Instance List在註冊表:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\InstalledInstances
可以直接讀取註冊表來獲取到列表:
using Microsoft.Win32;
var sql_instance_list = (string[])(Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Microsoft SQL Server").GetValue("InstalledInstances"));
調用SqlConnection來連接執行SQL即可。
4. 設置計劃任務,以SYSTEM用戶每月1日1:00執行,記錄日誌(發送郵件給管理通知)