工作需要,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执行,记录日志(发送邮件给管理通知)
这篇博客介绍了如何定期更改Windows密码和SQL Server密码,包括使用命令行修改Windows密码,通过SQL脚本检查并更新SQL Server登录密码。还讲述了如何用VS编写小程序批量处理,通过读取注册表获取SQL实例列表,并设置计划任务每月执行一次。

1699

被折叠的 条评论
为什么被折叠?



