笔记39 SQL Server批处理设置帐号密码
1 --SQL Server批处理设置帐号密码
2 -----------------------------------------------------------------
3 -- Name: SQL Server 数据库帐号密码生成
4 -- Author: 林勇桦
5 -- DateTime: 2012-3-24
6 -- Description:通过脚本生成数据库帐号密码并用户映射到服务器中的所有数据库,若果数据库服务器有多个,效率较高
7 -- 如何使用:修改下面【通用SQL模板】的@user和@password的值,拷贝到下面的代码到SSMS中执行,这样就可以生成出适合本数据库实例的SQL脚本了,
8 -- 我们再拷贝生成的SQL代码到SSMS中执行就可以了。
9
10 -- 执行下面的两个脚本不过秒级,所以20台服务器对你来说,简单啦。
11 -- 这里生成的SQL脚本中包含了系统数据库:master、model、msdb、tempdb,为了方便我就没对这些数据库进行限制的
12 -----------------------------------------------------------------
13
14 --通用SQL模板
15
16 --创建数据库帐号
17
18 DECLARE @dbname varchar(100)
19
20 DECLARE @user varchar(100)
21
22 DECLARE @password varchar(100)
23
24 DECLARE @sql varchar(max)
25
26 SET @user = 'hengshan'
27
28 SET @password = 'rain1q2w3e4r5t'
29
30
31
32 SET @sql ='
33
34 USE [master]
35
36 GO
37 -- 先在SQL SERVER中增加 @user 变量所代表的用户
38 CREATE LOGIN ['+ @user + '] WITH PASSWORD=N'''+ @password +''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
39
40 GO
41 -- 再赋予服务器角色 为:sysadmin
42 EXEC master..sp_addsrvrolemember @loginame = N'''+@user+''', @rolename = N''sysadmin''
43
44 GO'
45
46
47 PRINT(@sql)
48
49 DECLARE @itemCur CURSOR
50 SET @itemCur = CURSOR FOR
51 SELECT name from sys.databases where state =0
52
53 OPEN @itemCur
54 FETCH NEXT FROM @itemCur INTO @dbname
55 WHILE @@FETCH_STATUS=0
56 BEGIN
57
58
59
60 SET @sql = '
61
62 USE ['+ @dbname + ']
63
64 GO
65
66 CREATE USER ['+@user+'] FOR LOGIN ['+@user+']
67
68 GO
69
70 USE ['+ @dbname + ']
71
72 GO
73
74 ALTER USER ['+@user+'] WITH DEFAULT_SCHEMA=[dbo]
75
76 GO
77
78 USE ['+ @dbname + ']
79
80 GO
81
82 EXEC sp_addrolemember N''db_owner'', N'''+@user+'''
83
84 GO'
85
86 PRINT(@sql)
87
88
89
90 FETCH NEXT FROM @itemCur INTO @dbname
91
92 END
93
94
95
96 CLOSE @itemCur
97
98 DEALLOCATE @itemCur
99
100
101
102
103 --禁用sa帐号
104
105 SET @sql = '
106
107 USE [master]
108
109 GO
110
111 ALTER LOGIN [sa] DISABLE
112
113 GO'
114
115 PRINT(@sql)