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 :
|
-- Ce procédé produira d'un manuscrit d'ouvertures de création pour vous
CRÉER LE PROCÉDÉ [dbo]. [sp_dba_security_revlogin]
sysname = NULLE de @login_name,
tinyint de @script_server_roles = 1
AS
DÉCLARER le sysname de @name
DÉCLARER le @xstatus international
DÉCLARER le @binpwd varbinary (256)
DÉCLARER le sysname de @txtpwd
DÉCLARER le @tmpstr varchar (256)
DÉCLARER varbinary @SID_varbinary (85)
DÉCLARER @SID_string varchar (256)
SI (LE @LOGIN_NAME EST NULLE) COMMENCER
DÉCLARER LE CURSEUR de login_curs POUR
CHOISIR Sid, nom, 2 le xstatus, password_hash de sys.sql_logins
LÀ OÙ appeler <> « SA » et = 0 is_disabled
union toute
choisir Sid, nom, 4 le xstatus, nulle de sys.server_principals
là où type = « u » et = 0 is_disabled
L'EXTRÉMITÉ COMMENCENT AUTREMENT
DÉCLARER LE CURSEUR de login_curs POUR
CHOISIR Sid, nom, 2 le xstatus, password_hash de sys.sql_logins
LÀ OÙ appeler <> « SA » et = 0 is_disabled ET nom = @login_name
union toute
choisir Sid, nom, 4 le xstatus, nulle de sys.server_principals
là où type = « u » et = 0 is_disabled ET nom = @login_name
EXTRÉMITÉ
OUVRIR les login_curs
CHERCHER APRÈS des login_curs DANS @SID_varbinary, @name, @xstatus, @binpwd
SI (@@fetch_status = -1)
COMMENCER
N'IMPRIMER « aucune ouverture trouvée. »
FERMER les login_curs
DÉSAFFECTER les login_curs
RENVOYER -1
EXTRÉMITÉ
PLACER le @tmpstr = « manuscrit de sp_help_revlogin de/* »
IMPRIMER le @tmpstr
PLACER le @tmpstr = « ** produit »
+ CONVERTI (varchar, GETDATE ()) + "ON" + @@SERVERNAME + « * »
@tmpstr d'IMPRESSION
COPIE ''
La COPIE « DÉCLARENT le sysname de @pwd »
TANDIS QUE (@@FETCH_STATUS <> -1) COMMENCER
SI (@@FETCH_STATUS <> -2) COMMENCER
IMPRIMER ''
PLACER le @tmpstr = « -- Ouverture : » + @name
@tmpstr d'IMPRESSION
SI (LE @XSTATUS ET 4) = 4 COMMENCENT -- Compte/groupe authentifiés par NT
SI (LE @XSTATUS ET 1) = 1 COMMENCENT -- L'ouverture de NT est niée l'accès
PLACER le @tmpstr = '''' + @name + '''' du maître. .sp_denylogin d'EXEC
IMPRIMER le @tmpstr
L'EXTRÉMITÉ COMMENCENT AUTREMENT -- L'ouverture de NT a accès
PLACER le @tmpstr = '''' + @name + '''' du maître. .sp_grantlogin d'EXEC
IMPRIMER le @tmpstr
EXTRÉMITÉ
L'EXTRÉMITÉ COMMENCENT AUTREMENT -- Authentification de serveur de SQL
SI (LE @BINPWD N'EST PAS NUL) COMMENCER -- Mot de passe non nul
@binpwd de sp_dba_security_scriptLogin d'EXEC, @txtpwd DEHORS
SI (@XSTATUS ET 2048) = 2048 COMMENCENT
PLACER le @tmpstr = « PLACENT le @pwd = le CONVERTI (varchar (256), » + le @txtpwd + ") »
L'EXTRÉMITÉ COMMENCENT AUTREMENT
PLACER le @tmpstr = « PLACENT le @pwd = le CONVERTI (varbinary (256), » + le @txtpwd + ") »
EXTRÉMITÉ
@tmpstr d'IMPRESSION
sp_dba_security_scriptLogin d'EXEC @SID_varbinary, @SID_string DEHORS
PLACER le @tmpstr = '''' + @name du maître. .sp_addlogin d'EXEC
+ ''', @pwd, @sid = « + @SID_string + », @encryptopt = '
L'EXTRÉMITÉ COMMENCENT AUTREMENT -- Mot de passe nul
sp_dba_security_scriptLogin d'EXEC @SID_varbinary, @SID_string DEHORS
PLACER le @tmpstr = '''' + @name du maître. .sp_addlogin d'EXEC
+ ''', NULLE, @sid = « + @SID_string + », @encryptopt = '
EXTRÉMITÉ
SI (@XSTATUS ET 2048) = 2048 COMMENCENT
-- ouverture améliorée de 6.5
PLACER le ''' de @tmpstr = de skip_encryption_old de @tmpstr + de '''
L'EXTRÉMITÉ COMMENCENT AUTREMENT
PLACER le ''' de @tmpstr = de skip_encryption de @tmpstr + de '''
EXTRÉMITÉ
@tmpstr d'IMPRESSION
-- Rôles de serveur de poignée :
S'ISNULL (LES @SCRIPT_SERVER_ROLES, 1) = 1 COMMENCENT
SI (@XSTATUS &16) = 16 COMMENCENT
PLACER le @tmpstr = '''' + @name + ''' de sp_addsrvrolemember d'EXEC, '' ''' de sysadmin
IMPRIMER le @tmpstr
EXTRÉMITÉ
SI (@XSTATUS ET 32) = 32 COMMENCENT
PLACER le @tmpstr = '''' + @name + ''' de sp_addsrvrolemember d'EXEC, '' ''' de securityadmin
IMPRIMER le @tmpstr
EXTRÉMITÉ
SI (@XSTATUS ET 64) = 64 COMMENCENT
PLACER le @tmpstr = '''' + @name + ''' de sp_addsrvrolemember d'EXEC, '' ''' de serveradmin
IMPRIMER le @tmpstr
EXTRÉMITÉ
SI (@XSTATUS ET 128) = 128 COMMENCENT
PLACER le @tmpstr = '''' + @name + ''' de sp_addsrvrolemember d'EXEC, '' ''' de setupadmin
IMPRIMER le @tmpstr
EXTRÉMITÉ
SI (@XSTATUS ET 256) = 256 COMMENCENT
PLACER le @tmpstr = '''' + @name + ''' de sp_addsrvrolemember d'EXEC, '' ''' de processadmin
IMPRIMER le @tmpstr
EXTRÉMITÉ
SI (@XSTATUS ET 512) = 512 COMMENCENT
PLACER le @tmpstr = '''' + @name + ''' de sp_addsrvrolemember d'EXEC, '' ''' de diskadmin
IMPRIMER le @tmpstr
EXTRÉMITÉ
SI (@XSTATUS ET 1024) = 1024 COMMENCENT
PLACER le @tmpstr = '''' + @name + ''' de sp_addsrvrolemember d'EXEC, '' ''' de dbcreator
IMPRIMER le @tmpstr
EXTRÉMITÉ
SI (@XSTATUS ET 4096) = 4096 COMMENCENT
PLACER le @tmpstr = '''' + @name + ''' de sp_addsrvrolemember d'EXEC, '' ''' de bulkadmin
IMPRIMER le @tmpstr
EXTRÉMITÉ
EXTRÉMITÉ
-- Rôles de serveur de poignée d'extrémité
EXTRÉMITÉ
EXTRÉMITÉ
CHERCHER APRÈS des login_curs DANS @SID_varbinary, @name, @xstatus, @binpwd
EXTRÉMITÉ
Login_curs ÉTROITS
DÉSAFFECTER les login_curs
RETOUR 0
ALLER
-- Ceci fixera les ouvertures d'orphelins
EMPLOYER [db_dba]
ALLER
/Objet de ****** : StoredProcedure [dbo]. [Date de manuscrit d'USP_DBA_FixOrphanedLogins] : 06/29/2010 12h07 : 23 ******/
PLACER ANSI_NULLS DESSUS
ALLER
PLACER QUOTED_IDENTIFIER DESSUS
ALLER
Créer le procédé [dbo]. [USP_DBA_FixOrphanedLogins]
As
commencer
placer le nocount dessus
/** Montrer les ouvertures qui seront ** de menace/
DÉCLARER le @Collation varchar (100),
@SQL VARCHAR (2000),
@rc international
CRÉER le ##TempSync de TABLE (DB_NME Varchar (50), DBUserName varchar (50), SysLoginName varchar (50))
CHOISIR le @Collation = le CONVERTI (SYSNAME, DatabasePropertyEx (« maître », « collation "))
PLACER LE @SQL = LA 'UTILISATION [?]
CHOISIR '' ? '' DB_NME, A.name DBUserName, inname SysLoginName de B.log
Des sysusers A
JOINDRE master.dbo.syslogins B
SUR A.name assembler « + @Collation + » = B.Name
JOINDRE master.dbo.sysdatabases C
SUR C.Name = '' ? '' OÙ issqluser = 1
ET (A.sid N'EST PAS NUL
ET A.sid <> 0x0)
ET le suser_sname (A.sid) EST NUL
ET (C.status et 32) = 0 --chargement
ET (C.status et 64) = 0 --pré rétablissement
ET (C.status et 128) = 0 --récupération
ET (C.status et 256) = 0 --non récupéré
ET (C.status et 512) = 0 --en différé
ET (C.status et 1024) = 0 --lu seulement
ORDRE PAR A.name
INSERTION dans le @SQL de sp_msforeachdb du ##TempSync EXEC
-- CHOISIR * À PARTIR DU ##TempSync
placer le @rc = le @@rowcount
LAISSER TOMBER LE ##TempSync DE TABLE
si @rc = 0
commencer
raiserror (« aucunes ouvertures Orphaned à manipuler. », - 1, - 1)
retour 0
extrémité
/** Fixer ** orphaned d'ouvertures/
CHOISIR le =CONVERT de @Collation (SYSNAME, DatabasePropertyEx (« maître », « collation "))
PLACER LE @SQL = LA 'UTILISATION [?]
DÉCLARER le @DBUserName varchar (50)
DÉCLARER le @SysLoginName varchar (50)
DÉCLARER LE CURSEUR de SyncDBLogins POUR A.name CHOISI DBUserName, inname SysLoginName de B.log
Des sysusers UNE JOINTURE master.dbo.syslogins B SUR A.name assemblent '+ @Collation +
'= B.Name JOIGNENT master.dbo.sysdatabases C SUR C.Name = '' ? ''
LÀ OÙ l'issqluser = 1 ET (A.sid N'EST PAS NUL ET A.sid <> 0x0) ET suser_sname (A.sid) EST NUL
ET (C.status et 32) = 0 --Chargement
ET (C.status et 64) = 0 --pré rétablissement
ET (C.status et 128) = 0 --récupération
ET (C.status et 256) = 0 --non récupéré
ET (C.status et 512) = 0 --en différé
ET (C.status et 1024) = 0 --lu seulement
ORDRE PAR A.name
OUVRIR SyncDBLogins
CHERCHER APRÈS de SyncDBLogins DANS le @DBUserName, @SysLoginName
TANDIS QUE LE @@FETCH_STATUS = 0 COMMENCENT
Sp_change_users_login '' update_one '' d'EXEC, @DBUserName, @SysLoginName
CHERCHER APRÈS de SyncDBLogins DANS le @DBUserName, @SysLoginName
EXTRÉMITÉ
SyncDBLogins ÉTROIT
DÉSAFFECTER SyncDBLogins
@SQL de sp_msforeachdb d'EXEC
retour 0
extrémité
ALLER
|