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 procedimiento generará una escritura de las conexiones del crear para usted
CREAR EL PROCEDIMIENTO [dbo]. [sp_dba_security_revlogin]
sysname = FALTA DE INFORMACIÓN del @login_name,
tinyint de los @script_server_roles = 1
COMO
DECLARAR el sysname del @name
DECLARAR el @xstatus internacional
DECLARAR el @binpwd varbinary (256)
DECLARAR el sysname del @txtpwd
DECLARAR el @tmpstr varchar (256)
DECLARAR varbinary @SID_varbinary (85)
DECLARAR @SID_string varchar (256)
SI (EL @LOGIN_NAME ES FALTA DE INFORMACIÓN) COMENZAR
DECLARAR EL CURSOR de los login_curs PARA
SELECCIONAR Sid, nombre, 2 xstatus, password_hash de sys.sql_logins
DONDE nombrar <> el “sa” y = 0 is_disabled
unión toda
seleccionar Sid, nombre, 4 xstatus, falta de información de sys.server_principals
donde tipo = “u” y = 0 is_disabled
EL EXTREMO COMIENZA
DECLARAR EL CURSOR de los login_curs PARA
SELECCIONAR Sid, nombre, 2 xstatus, password_hash de sys.sql_logins
DONDE nombrar <> el “sa” y = 0 is_disabled Y nombre = @login_name
unión toda
seleccionar Sid, nombre, 4 xstatus, falta de información de sys.server_principals
donde tipo = “u” y = 0 is_disabled Y nombre = @login_name
EXTREMO
ABRIR los login_curs
TRAER DESPUÉS de los login_curs EN @SID_varbinary, @name, @xstatus, @binpwd
SI (@@fetch_status = -1)
COMENZAR
NO IMPRIMIR “ninguna conexión encontrada.”
CERRAR los login_curs
DESASIGNAR los login_curs
VOLVER -1
EXTREMO
FIJAR el @tmpstr = “escritura del sp_help_revlogin de/*”
IMPRIMIR el @tmpstr
FIJAR el @tmpstr = “** generado”
+ CONVERTIDO (varchar, GETDATE ()) + "ON" + @@SERVERNAME + “*”
@tmpstr de la IMPRESIÓN
IMPRESIÓN ''
La IMPRESIÓN “DECLARA el sysname del @pwd”
MIENTRAS QUE (@@FETCH_STATUS <> -1) COMENZAR
SI (@@FETCH_STATUS <> -2) COMENZAR
IMPRIMIR ''
FIJAR el @tmpstr = “-- Conexión: ” + @name
@tmpstr de la IMPRESIÓN
SI (EL @XSTATUS Y 4) = 4 COMIENZA -- Cuenta/grupo authenticados NT
SI (EL @XSTATUS Y 1) = 1 COMIENZA -- La conexión del NT se niega el acceso
FIJAR el @tmpstr = '''' + @name + '''' del amo. .sp_denylogin de EXEC
IMPRIMIR el @tmpstr
EL EXTREMO COMIENZA -- La conexión del NT tiene acceso
FIJAR el @tmpstr = '''' + @name + '''' del amo. .sp_grantlogin de EXEC
IMPRIMIR el @tmpstr
EXTREMO
EL EXTREMO COMIENZA -- Autentificación de servidor del SQL
SI (EL @BINPWD NO ES NULO) COMENZAR -- Contraseña no nula
@binpwd del sp_dba_security_scriptLogin de EXEC, @txtpwd HACIA FUERA
SI (@XSTATUS Y 2048) = 2048 COMIENZAN
FIJAR el @tmpstr = “FIJAN al @pwd = A CONVERTIDO (varchar (256),” + el @txtpwd + ")”
EL EXTREMO COMIENZA
FIJAR el @tmpstr = “FIJAN al @pwd = A CONVERTIDO (varbinary (256),” + el @txtpwd + ")”
EXTREMO
@tmpstr de la IMPRESIÓN
sp_dba_security_scriptLogin de EXEC @SID_varbinary, @SID_string HACIA FUERA
FIJAR el @tmpstr = '''' + @name del amo. .sp_addlogin de EXEC
+ ''', @pwd, @sid = “+ @SID_string +”, @encryptopt = '
EL EXTREMO COMIENZA -- Contraseña nula
sp_dba_security_scriptLogin de EXEC @SID_varbinary, @SID_string HACIA FUERA
FIJAR el @tmpstr = '''' + @name del amo. .sp_addlogin de EXEC
+ ''', FALTA DE INFORMACIÓN, @sid = “+ @SID_string +”, @encryptopt = '
EXTREMO
SI (@XSTATUS Y 2048) = 2048 COMIENZAN
-- conexión aumentada a partir del 6.5
FIJAR el ''' del @tmpstr = del skip_encryption_old del @tmpstr + del '''
EL EXTREMO COMIENZA
FIJAR el ''' del @tmpstr = del skip_encryption del @tmpstr + del '''
EXTREMO
@tmpstr de la IMPRESIÓN
-- Papeles del servidor de la manija:
SI ISNULL (LOS @SCRIPT_SERVER_ROLES, 1) = 1 COMIENZAN
SI (@XSTATUS Y 16) = 16 COMIENZAN
FIJAR el @tmpstr = '''' + @name + ''' del sp_addsrvrolemember de EXEC, '' ''' del sysadmin
IMPRIMIR el @tmpstr
EXTREMO
SI (@XSTATUS Y 32) = 32 COMIENZAN
FIJAR el @tmpstr = '''' + @name + ''' del sp_addsrvrolemember de EXEC, '' ''' del securityadmin
IMPRIMIR el @tmpstr
EXTREMO
SI (@XSTATUS Y 64) = 64 COMIENZAN
FIJAR el @tmpstr = '''' + @name + ''' del sp_addsrvrolemember de EXEC, '' ''' del serveradmin
IMPRIMIR el @tmpstr
EXTREMO
SI (@XSTATUS Y 128) = 128 COMIENZAN
FIJAR el @tmpstr = '''' + @name + ''' del sp_addsrvrolemember de EXEC, '' ''' del setupadmin
IMPRIMIR el @tmpstr
EXTREMO
SI (@XSTATUS Y 256) = 256 COMIENZAN
FIJAR el @tmpstr = '''' + @name + ''' del sp_addsrvrolemember de EXEC, '' ''' del processadmin
IMPRIMIR el @tmpstr
EXTREMO
SI (@XSTATUS Y 512) = 512 COMIENZAN
FIJAR el @tmpstr = '''' + @name + ''' del sp_addsrvrolemember de EXEC, '' ''' del diskadmin
IMPRIMIR el @tmpstr
EXTREMO
SI (@XSTATUS Y 1024) = 1024 COMIENZAN
FIJAR el @tmpstr = '''' + @name + ''' del sp_addsrvrolemember de EXEC, '' ''' del dbcreator
IMPRIMIR el @tmpstr
EXTREMO
SI (@XSTATUS Y 4096) = 4096 COMIENZAN
FIJAR el @tmpstr = '''' + @name + ''' del sp_addsrvrolemember de EXEC, '' ''' del bulkadmin
IMPRIMIR el @tmpstr
EXTREMO
EXTREMO
-- Papeles del servidor de la manija del extremo
EXTREMO
EXTREMO
TRAER DESPUÉS de los login_curs EN @SID_varbinary, @name, @xstatus, @binpwd
EXTREMO
Login_curs CERCANOS
DESASIGNAR los login_curs
VUELTA 0
IR
-- Esto fijará las conexiones de los huérfanos
UTILIZAR [db_dba]
IR
/Objeto del ******: StoredProcedure [dbo]. Fecha de la escritura [ de USP_DBA_FixOrphanedLogins]: 06/29/2010 12:07: 23 ******/
FIJAR ANSI_NULLS ENCENDIDO
IR
FIJAR QUOTED_IDENTIFIER ENCENDIDO
IR
Crear el procedimiento [dbo]. [USP_DBA_FixOrphanedLogins]
como
comenzar
fijar el nocount encendido
/** Demostrar las conexiones que serán de la amenaza **/
DECLARAR el @Collation varchar (100),
@SQL VARCHAR (2000),
@rc internacional
CREAR el ##TempSync de la TABLA (DB_NME Varchar (50), DBUserName varchar (50), SysLoginName varchar (50))
SELECCIONAR al @Collation = A CONVERTIDO (SYSNAME, DatabasePropertyEx (“amo”, la “colación "))
FIJAR EL @SQL = EL 'USO [?]
¿SELECCIONAR ''? '' DB_NME, A.name DBUserName, inname SysLoginName de B.log
De los sysusers A
ENSAMBLAR master.dbo.syslogins B
EN A.name compaginar “+ @Collation +” = B.Name
ENSAMBLAR master.dbo.sysdatabases C
¿EN C.Name = ''? '' DONDE issqluser = 1
Y (A.sid NO ES NULO
Y A.sid <> 0x0)
Y el suser_sname (A.sid) ES NULO
Y (C.status y 32) = 0 --cargamento
Y (C.status y 64) = 0 --pre recuperación
Y (C.status y 128) = 0 --recuperación
Y (C.status y 256) = 0 --no recuperado
Y (C.status y 512) = 0 --fuera de línea
Y (C.status y 1024) = 0 --leído solamente
ORDEN POR A.name
PARTE MOVIBLE en @SQL del sp_msforeachdb del ##TempSync EXEC
-- SELECCIONAR * DE ##TempSync
fijar el @rc = el @@rowcount
CAER EL ##TempSync DE LA TABLA
si @rc = 0
comenzar
raiserror (“ningunas conexiones Orphaned que se dirigirán. ”, - 1, - 1)
vuelta 0
extremo
/** Fijar de las conexiones ** orphaned/
SELECCIONAR el =CONVERT del @Collation (SYSNAME, DatabasePropertyEx (“amo”, la “colación "))
FIJAR EL @SQL = EL 'USO [?]
DECLARAR el @DBUserName varchar (50)
DECLARAR el @SysLoginName varchar (50)
DECLARAR EL CURSOR de SyncDBLogins PARA A.name SELECTO DBUserName, inname SysLoginName de B.log
De sysusers UN ENSAMBLAR master.dbo.syslogins B EN A.name compagina '+ @Collation +
¿'= B.Name ENSAMBLAN master.dbo.sysdatabases C EN C.Name = ''? ''
DONDE ESTÁ NULO el issqluser = 1 Y (A.sid NO ES NULO <> Y A.sid 0x0) Y el suser_sname (A.sid)
Y (C.status y 32) = 0 --Cargamento
Y (C.status y 64) = 0 --pre recuperación
Y (C.status y 128) = 0 --recuperación
Y (C.status y 256) = 0 --no recuperado
Y (C.status y 512) = 0 --fuera de línea
Y (C.status y 1024) = 0 --leído solamente
ORDEN POR A.name
ABRIR SyncDBLogins
TRAER DESPUÉS de SyncDBLogins EN el @DBUserName, @SysLoginName
MIENTRAS QUE EL @@FETCH_STATUS = 0 COMIENZA
Sp_change_users_login '' update_one '' de EXEC, @DBUserName, @SysLoginName
TRAER DESPUÉS de SyncDBLogins EN el @DBUserName, @SysLoginName
EXTREMO
SyncDBLogins CERCANO
DESASIGNAR SyncDBLogins
@SQL del sp_msforeachdb de EXEC
vuelta 0
extremo
IR
|