笔记39 SQL Server批处理设置帐号密码
笔记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)