1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
|
-- Este procedimento gerará um certificado dos inícios de uma sessão da criação para você
CRIAR O PROCEDIMENTO [dbo]. [sp_dba_security_revlogin]
sysname = ZERO do @login_name,
tinyint dos @script_server_roles = 1
COMO
DECLARAR o sysname do @name
DECLARAR o @xstatus int
DECLARAR o @binpwd varbinary (256)
DECLARAR o sysname do @txtpwd
DECLARAR o @tmpstr varchar (256)
DECLARAR varbinary @SID_varbinary (85)
DECLARAR @SID_string varchar (256)
SE (O @LOGIN_NAME É ZERO) COMEÇAR
DECLARAR O CURSOR dos login_curs PARA
SELECIONAR sid, nome, 2 xstatus, password_hash de sys.sql_logins
ONDE nomear <> o “sa” e = 0 is_disabled
união toda
selecionar sid, nome, 4 xstatus, zero de sys.server_principals
onde tipo = “u” e = 0 is_disabled
A EXTREMIDADE COMEÇA MAIS
DECLARAR O CURSOR dos login_curs PARA
SELECIONAR sid, nome, 2 xstatus, password_hash de sys.sql_logins
ONDE nomear <> o “sa” e = 0 is_disabled E nome = @login_name
união toda
selecionar sid, nome, 4 xstatus, zero de sys.server_principals
onde tipo = “u” e = 0 is_disabled E nome = @login_name
EXTREMIDADE
ABRIR login_curs
BUSCAR EM SEGUIDA dos login_curs em @SID_varbinary, @name, @xstatus, @binpwd
SE (@@fetch_status = -1)
COMEÇAR
NÃO IMPRIMIR “nenhum início de uma sessão encontrado.”
FECHAR login_curs
LIBERAR login_curs
RETORNAR -1
EXTREMIDADE
AJUSTAR o @tmpstr = de “certificado do sp_help_revlogin/*”
IMPRIMIR o @tmpstr
AJUSTAR o @tmpstr = “** gerado”
+ CONVERSO (varchar, GETDATE ()) + "ON" + @@SERVERNAME + “*”
@tmpstr da CÓPIA
CÓPIA ''
A CÓPIA “DECLARA o sysname do @pwd”
QUANDO (@@FETCH_STATUS <> -1) COMEÇAR
SE (@@FETCH_STATUS <> -2) COMEÇAR
IMPRIMIR ''
AJUSTAR o @tmpstr = “-- Início de uma sessão: ” + @name
@tmpstr da CÓPIA
SE (@XSTATUS & 4) = 4 COMEÇAM -- Cliente/grupo autenticados NT
SE (@XSTATUS & 1) = 1 COMEÇA -- O início de uma sessão do NT é negado o acesso
AJUSTAR o @tmpstr = '''' + @name + '''' do mestre. .sp_denylogin de EXEC
IMPRIMIR o @tmpstr
A EXTREMIDADE COMEÇA MAIS -- O início de uma sessão do NT tem o acesso
AJUSTAR o @tmpstr = '''' + @name + '''' do mestre. .sp_grantlogin de EXEC
IMPRIMIR o @tmpstr
EXTREMIDADE
A EXTREMIDADE COMEÇA MAIS -- Autenticação de usuário do SQL
SE (O @BINPWD NÃO É NULO) COMEÇAR -- Senha Non-null
@binpwd do sp_dba_security_scriptLogin de EXEC, @txtpwd PARA FORA
SE (@XSTATUS & 2048) = 2048 COMEÇAM
AJUSTAR o @tmpstr = “AJUSTAM o @pwd = o CONVERSO (varchar (256),” + o @txtpwd + ")”
A EXTREMIDADE COMEÇA MAIS
AJUSTAR o @tmpstr = “AJUSTAM o @pwd = o CONVERSO (varbinary (256),” + o @txtpwd + ")”
EXTREMIDADE
@tmpstr da CÓPIA
sp_dba_security_scriptLogin de EXEC @SID_varbinary, @SID_string PARA FORA
AJUSTAR o @tmpstr = '''' + @name do mestre. .sp_addlogin de EXEC
+ ''', @pwd, @sid = “+ @SID_string +”, @encryptopt = '
A EXTREMIDADE COMEÇA MAIS -- Senha nula
sp_dba_security_scriptLogin de EXEC @SID_varbinary, @SID_string PARA FORA
AJUSTAR o @tmpstr = '''' + @name do mestre. .sp_addlogin de EXEC
+ ''', ZERO, @sid = “+ @SID_string +”, @encryptopt = '
EXTREMIDADE
SE (@XSTATUS & 2048) = 2048 COMEÇAM
-- início de uma sessão promovido de 6.5
AJUSTAR o ''' do @tmpstr = do skip_encryption_old do @tmpstr + do '''
A EXTREMIDADE COMEÇA MAIS
AJUSTAR o ''' do @tmpstr = do skip_encryption do @tmpstr + do '''
EXTREMIDADE
@tmpstr da CÓPIA
-- Papéis do usuário do punho:
SE ISNULL (@SCRIPT_SERVER_ROLES, 1) = 1 COMEÇAM
SE (@XSTATUS & 16) = 16 COMEÇAM
AJUSTAR o @tmpstr = '''' + @name + ''' do sp_addsrvrolemember de EXEC, do '' ''' sysadmin
IMPRIMIR o @tmpstr
EXTREMIDADE
SE (@XSTATUS & 32) = 32 COMEÇAM
AJUSTAR o @tmpstr = '''' + @name + ''' do sp_addsrvrolemember de EXEC, do '' ''' securityadmin
IMPRIMIR o @tmpstr
EXTREMIDADE
SE (@XSTATUS & 64) = 64 COMEÇAM
AJUSTAR o @tmpstr = '''' + @name + ''' do sp_addsrvrolemember de EXEC, do '' ''' serveradmin
IMPRIMIR o @tmpstr
EXTREMIDADE
SE (@XSTATUS & 128) = 128 COMEÇAM
AJUSTAR o @tmpstr = '''' + @name + ''' do sp_addsrvrolemember de EXEC, do '' ''' setupadmin
IMPRIMIR o @tmpstr
EXTREMIDADE
SE (@XSTATUS & 256) = 256 COMEÇAM
AJUSTAR o @tmpstr = '''' + @name + ''' do sp_addsrvrolemember de EXEC, do '' ''' processadmin
IMPRIMIR o @tmpstr
EXTREMIDADE
SE (@XSTATUS & 512) = 512 COMEÇAM
AJUSTAR o @tmpstr = '''' + @name + ''' do sp_addsrvrolemember de EXEC, do '' ''' diskadmin
IMPRIMIR o @tmpstr
EXTREMIDADE
SE (@XSTATUS & 1024) = 1024 COMEÇAM
AJUSTAR o @tmpstr = '''' + @name + ''' do sp_addsrvrolemember de EXEC, do '' ''' dbcreator
IMPRIMIR o @tmpstr
EXTREMIDADE
SE (@XSTATUS & 4096) = 4096 COMEÇAM
AJUSTAR o @tmpstr = '''' + @name + ''' do sp_addsrvrolemember de EXEC, do '' ''' bulkadmin
IMPRIMIR o @tmpstr
EXTREMIDADE
EXTREMIDADE
-- Papéis do usuário do punho da extremidade
EXTREMIDADE
EXTREMIDADE
BUSCAR EM SEGUIDA dos login_curs em @SID_varbinary, @name, @xstatus, @binpwd
EXTREMIDADE
Login_curs PRÓXIMOS
LIBERAR login_curs
RETORNO 0
IR
-- Isto reparará os inícios de uma sessão dos órfão
USAR [db_dba]
IR
/Objeto do ******: StoredProcedure [dbo]. Data do certificado [ de USP_DBA_FixOrphanedLogins]: 06/29/2010 de 12:07: 23 ******/
AJUSTAR ANSI_NULLS SOBRE
IR
AJUSTAR QUOTED_IDENTIFIER SOBRE
IR
Criar o procedimento [dbo]. [USP_DBA_FixOrphanedLogins]
como
começar
ajustar o nocount sobre
/** Mostrar os inícios de uma sessão que serão ** da ameaça/
DECLARAR o @Collation varchar (100),
@SQL VARCHAR (2000),
@rc int
CRIAR o ##TempSync da TABELA (DB_NME Varchar (50), DBUserName varchar (50), SysLoginName varchar (50))
SELECIONAR o @Collation = o CONVERSO (SYSNAME, DatabasePropertyEx (“mestre”, o “cotejo "))
AJUSTAR O @SQL = 'O USO [?]
SELECIONAR ''? '' DB_NME, A.name DBUserName, inname SysLoginName de B.log
Dos sysusers A
JUNTAR-SE a master.dbo.syslogins B
Em A.name ordenar “+ @Collation +” = B.Name
JUNTAR-SE a master.dbo.sysdatabases C
EM C.Name = ''? '' ONDE issqluser = 1
E (A.sid NÃO É NULO
E A.sid <> 0x0)
E o suser_sname (A.sid) É NULO
E (C.status & 32) = 0 --carregamento
E (C.status & 64) = 0 --pre recuperação
E (C.status & 128) = 0 --recuperação
E (C.status & 256) = 0 --não recuperado
E (C.status & 512) = 0 --fora de linha
E (C.status & 1024) = 0 --lido somente
ORDEM por A.name
INSERÇÃO no @SQL do sp_msforeachdb do ##TempSync EXEC
-- SELECIONAR * DO ##TempSync
ajustar o @rc = o @@rowcount
DEIXAR CAIR O ##TempSync DA TABELA
se @rc = 0
começar
raiserror (“nenhuns inícios de uma sessão orfandades a ser segurados. ”, - 1, - 1)
retorno 0
extremidade
/** Reparar ** orfandade dos inícios de uma sessão/
SELECIONAR o =CONVERT do @Collation (SYSNAME, DatabasePropertyEx (“mestre”, o “cotejo "))
AJUSTAR O @SQL = 'O USO [?]
DECLARAR o @DBUserName varchar (50)
DECLARAR o @SysLoginName varchar (50)
DECLARAR O CURSOR de SyncDBLogins PARA A.name SELETO DBUserName, inname SysLoginName de B.log
Dos sysusers UMA JUNTA master.dbo.syslogins B em A.name ordena '+ @Collation +
'= B.Name JUNTAM-SE a master.dbo.sysdatabases C EM C.Name = ''? ''
ONDE o issqluser = 1 E (A.sid NÃO É NULO E A.sid <> 0x0) E suser_sname (A.sid) É NULO
E (C.status & 32) = 0 --Carregamento
E (C.status & 64) = 0 --pre recuperação
E (C.status & 128) = 0 --recuperação
E (C.status & 256) = 0 --não recuperado
E (C.status & 512) = 0 --fora de linha
E (C.status & 1024) = 0 --lido somente
ORDEM por A.name
ABRIR SyncDBLogins
BUSCAR EM SEGUIDA de SyncDBLogins no @DBUserName, @SysLoginName
QUANDO O @@FETCH_STATUS = 0 COMEÇAR
Sp_change_users_login '' update_one '' de EXEC, @DBUserName, @SysLoginName
BUSCAR EM SEGUIDA de SyncDBLogins no @DBUserName, @SysLoginName
EXTREMIDADE
SyncDBLogins PRÓXIMO
LIBERAR SyncDBLogins
@SQL do sp_msforeachdb de EXEC
retorno 0
extremidade
IR
|