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:
|
-- Questa procedura gli genererà uno scritto di inizio attività di generazione per
GENERARE LA PROCEDURA [dbo]. [sp_dba_security_revlogin]
sysname = POSIZIONE DI SEGNALE MINIMO del @login_name,
tinyint dei @script_server_roles = 1
AS
DICHIARARE lo sysname del @name
DICHIARARE il @xstatus int
DICHIARARE il @binpwd varbinary (256)
DICHIARARE lo sysname del @txtpwd
DICHIARARE il @tmpstr varchar (256)
DICHIARARE varbinary @SID_varbinary (85)
DICHIARARE @SID_string varchar (256)
SE (@LOGIN_NAME È POSIZIONE DI SEGNALE MINIMO) COMINCIARE
DICHIARARE IL CURSORE dei login_curs PER
SELEZIONARE il Sid, il nome, 2 il xstatus, password_hash da sys.sql_logins
DOVE chiamare <> “il sa„ e = 0 is_disabled
unione tutta
selezionare il Sid, il nome, 4 il xstatus, posizione di segnale minimo da sys.server_principals
dove tipo = “u„ e = 0 is_disabled
L'ESTREMITÀ ALTRIMENTI COMINCIA
DICHIARARE IL CURSORE dei login_curs PER
SELEZIONARE il Sid, il nome, 2 il xstatus, password_hash da sys.sql_logins
DOVE chiamare <> “il sa„ e = 0 is_disabled E nome = @login_name
unione tutta
selezionare il Sid, il nome, 4 il xstatus, posizione di segnale minimo da sys.server_principals
dove tipo = “u„ e = 0 is_disabled E nome = @login_name
ESTREMITÀ
APRIRE i login_curs
ANDARE A PRENDERE DOPO dai login_curs in @SID_varbinary, il @name, il @xstatus, @binpwd
SE (@@fetch_status = -1)
COMINCIARE
NON STAMPARE “inizio attività trovati.„
CHIUDERE i login_curs
CANCELL L'ASSEGNAZIONEARE dei login_curs
RESTITUIRE -1
ESTREMITÀ
REGOLARE il @tmpstr = “scritto dello sp_help_revlogin di/*„
STAMPARE il @tmpstr
REGOLARE il @tmpstr = “** generato„
+ CONVERTITO (varchar, GETDATE ()) + "ON" + @@SERVERNAME + “*/„
@tmpstr della STAMPA
STAMPA ''
La STAMPA “DICHIARA lo sysname del @pwd„
MENTRE (@@FETCH_STATUS <> -1) COMINCIARE
SE (@@FETCH_STATUS <> -2) COMINCIARE
STAMPARE ''
REGOLARE il @tmpstr = “-- Inizio attività: „ + @name
@tmpstr della STAMPA
SE (@XSTATUS & 4) = 4 COMINCIA -- Cliente/gruppo autenticati NT
SE (@XSTATUS & 1) = 1 COMINCIA -- L'inizio attività del NT è negato l'accesso
REGOLARE il @tmpstr = '''' + @name + '''' del padrone. .sp_denylogin di EXEC
STAMPARE il @tmpstr
L'ESTREMITÀ ALTRIMENTI COMINCIA -- L'inizio attività del NT ha accesso
REGOLARE il @tmpstr = '''' + @name + '''' del padrone. .sp_grantlogin di EXEC
STAMPARE il @tmpstr
ESTREMITÀ
L'ESTREMITÀ ALTRIMENTI COMINCIA -- Autenticazione di assistente di SQL
SE (@BINPWD NON È NULLO) COMINCIARE -- Parola d'accesso non nulla
@binpwd dello sp_dba_security_scriptLogin di EXEC, @txtpwd FUORI
SE (@XSTATUS & 2048) = 2048 COMINCIANO
REGOLARE il @tmpstr = “REGOLANO il @pwd = il CONVERTITO (varchar (256),„ + @txtpwd + ")„
L'ESTREMITÀ ALTRIMENTI COMINCIA
REGOLARE il @tmpstr = “REGOLANO il @pwd = il CONVERTITO (varbinary (256),„ + @txtpwd + ")„
ESTREMITÀ
@tmpstr della STAMPA
sp_dba_security_scriptLogin di EXEC @SID_varbinary, @SID_string FUORI
REGOLARE il @tmpstr = '''' + @name del padrone. .sp_addlogin di EXEC
+ ''', @pwd, @sid = “+ @SID_string +„, @encryptopt = '
L'ESTREMITÀ ALTRIMENTI COMINCIA -- Parola d'accesso nulla
sp_dba_security_scriptLogin di EXEC @SID_varbinary, @SID_string FUORI
REGOLARE il @tmpstr = '''' + @name del padrone. .sp_addlogin di EXEC
+ ''', POSIZIONE DI SEGNALE MINIMO, @sid = “+ @SID_string +„, @encryptopt = '
ESTREMITÀ
SE (@XSTATUS & 2048) = 2048 COMINCIANO
-- inizio attività aggiornato da 6.5
REGOLARE il ''' del @tmpstr = dello skip_encryption_old del @tmpstr + del '''
L'ESTREMITÀ ALTRIMENTI COMINCIA
REGOLARE il ''' del @tmpstr = di skip_encryption del @tmpstr + del '''
ESTREMITÀ
@tmpstr della STAMPA
-- Ruoli dell'assistente della maniglia:
SE ISNULL (@SCRIPT_SERVER_ROLES, 1) = 1 COMINCIANO
SE (@XSTATUS & 16) = 16 COMINCIANO
REGOLARE il @tmpstr = '''' + @name + ''' dello sp_addsrvrolemember di EXEC, '' ''' di sysadmin
STAMPARE il @tmpstr
ESTREMITÀ
SE (@XSTATUS & 32) = 32 COMINCIANO
REGOLARE il @tmpstr = '''' + @name + ''' dello sp_addsrvrolemember di EXEC, '' ''' di securityadmin
STAMPARE il @tmpstr
ESTREMITÀ
SE (@XSTATUS & 64) = 64 COMINCIANO
REGOLARE il @tmpstr = '''' + @name + ''' dello sp_addsrvrolemember di EXEC, '' ''' di serveradmin
STAMPARE il @tmpstr
ESTREMITÀ
SE (@XSTATUS & 128) = 128 COMINCIANO
REGOLARE il @tmpstr = '''' + @name + ''' dello sp_addsrvrolemember di EXEC, '' ''' di setupadmin
STAMPARE il @tmpstr
ESTREMITÀ
SE (@XSTATUS & 256) = 256 COMINCIANO
REGOLARE il @tmpstr = '''' + @name + ''' dello sp_addsrvrolemember di EXEC, '' ''' di processadmin
STAMPARE il @tmpstr
ESTREMITÀ
SE (@XSTATUS & 512) = 512 COMINCIANO
REGOLARE il @tmpstr = '''' + @name + ''' dello sp_addsrvrolemember di EXEC, '' ''' di diskadmin
STAMPARE il @tmpstr
ESTREMITÀ
SE (@XSTATUS & 1024) = 1024 COMINCIANO
REGOLARE il @tmpstr = '''' + @name + ''' dello sp_addsrvrolemember di EXEC, '' ''' di dbcreator
STAMPARE il @tmpstr
ESTREMITÀ
SE (@XSTATUS & 4096) = 4096 COMINCIANO
REGOLARE il @tmpstr = '''' + @name + ''' dello sp_addsrvrolemember di EXEC, '' ''' di bulkadmin
STAMPARE il @tmpstr
ESTREMITÀ
ESTREMITÀ
-- Ruoli dell'assistente della maniglia dell'estremità
ESTREMITÀ
ESTREMITÀ
ANDARE A PRENDERE DOPO dai login_curs in @SID_varbinary, il @name, il @xstatus, @binpwd
ESTREMITÀ
Login_curs VICINI
CANCELL L'ASSEGNAZIONEARE dei login_curs
RITORNO 0
ANDARE
-- Ciò riparerà gli inizio attività degli orfani
USARE [db_dba]
ANDARE
/Oggetto del ******: StoredProcedure [dbo]. Data dello scritto [ di USP_DBA_FixOrphanedLogins]: 06/29/2010 di 12:07: 23 ******/
REGOLARE ANSI_NULLS SOPRA
ANDARE
REGOLARE QUOTED_IDENTIFIER SOPRA
ANDARE
Generare la procedura [dbo]. [USP_DBA_FixOrphanedLogins]
As
cominciare
regolare il nocount sopra
/** Mostrare gli inizio attività che saranno di minaccia **/
DICHIARARE il @Collation varchar (100),
@SQL VARCHAR (2000),
@rc int
GENERARE il ##TempSync della TABELLA (DB_NME Varchar (50), DBUserName varchar (50), SysLoginName varchar (50))
SELEZIONARE il @Collation = il CONVERTITO (SYSNAME, DatabasePropertyEx (“padrone„, “collazione "))
REGOLARE IL @SQL = 'L'USO [?]
SELEZIONARE ''? '' DB_NME, A.name DBUserName, inname SysLoginName di B.log
Dagli sysusers A
UNIRE master.dbo.syslogins B
Su A.name fascicolare “+ @Collation +„ = B.Name
UNIRE master.dbo.sysdatabases C
SU C.Name = ''? '' DOVE issqluser = 1
E (A.sid NON È NULLO
E A.sid <> 0x0)
E il suser_sname (A.sid) È NULLO
E (C.status & 32) = 0 --caricamento
E (C.status & 64) = 0 --pre recupero
E (C.status & 128) = 0 --recupero
E (C.status & 256) = 0 --non recuperato
E (C.status & 512) = 0 --fuori linea
E (C.status & 1024) = 0 --colto soltanto
ORDINE da A.name
INSERTO nel @SQL dello sp_msforeachdb del ##TempSync EXEC
-- SELEZIONARE * A PARTIRE DA ##TempSync
regolare il @rc = il @@rowcount
CADERE IL ##TempSync DELLA TABELLA
se @rc = 0
cominciare
raiserror (“nessun inizio attività orfani da trattare. „, - 1, - 1)
ritorno 0
estremità
/** Riparare di inizio attività ** orfano/
SELEZIONARE il =CONVERT di @Collation (SYSNAME, DatabasePropertyEx (“padrone„, “collazione "))
REGOLARE IL @SQL = 'L'USO [?]
DICHIARARE il @DBUserName varchar (50)
DICHIARARE il @SysLoginName varchar (50)
DICHIARARE IL CURSORE di SyncDBLogins PER A.name PRESCELTO DBUserName, il inname SysLoginName di B.log
Dagli sysusers UN UNIRE master.dbo.syslogins B su A.name fascicola '+ @Collation +
'= B.Name UNISCONO master.dbo.sysdatabases C SU C.Name = ''? ''
DOVE il issqluser = 1 E (A.sid NON È NULLO E A.sid <> 0x0) E suser_sname (A.sid) È NULLO
E (C.status & 32) = 0 --Caricamento
E (C.status & 64) = 0 --pre recupero
E (C.status & 128) = 0 --recupero
E (C.status & 256) = 0 --non recuperato
E (C.status & 512) = 0 --fuori linea
E (C.status & 1024) = 0 --colto soltanto
ORDINE da A.name
APRIRE SyncDBLogins
ANDARE A PRENDERE DOPO da SyncDBLogins in @DBUserName, @SysLoginName
MENTRE IL @@FETCH_STATUS = 0 COMINCIA
Sp_change_users_login '' update_one '' di EXEC, @DBUserName, @SysLoginName
ANDARE A PRENDERE DOPO da SyncDBLogins in @DBUserName, @SysLoginName
ESTREMITÀ
SyncDBLogins VICINO
CANCELL L'ASSEGNAZIONEARE di SyncDBLogins
@SQL dello sp_msforeachdb di EXEC
ritorno 0
estremità
ANDARE
|