Die folgenden Queries erstellen die GRAND Anweisungen für SELECT, INSERT, UPDATE, DELETE und ALTER um die Zugriffsrechte auf Objekte für einen bestimmten Benutzer zu kopieren bzw. zu clonen. Das ist besonders dann hilfreich, wenn ein neuer User die gleichen Rechte haben soll, wie ein bereits vorhandener User.
Der String "new_user_name" muss mit dem entsprechenden Neuen Benutzernamen ausgetauscht werden.
Der String "existing_user_name" muss mit dem entsprechenden bereits existierenden Benutzernamen ausgetauscht werden.
Erstellt die GRAND Anweisung um SELECT-Rechte eines Users auf Objekte/Tabellen zu clonen/kopieren
SELECT 'GRANT SELECT ON ' + user_name(t4.uid) + '.' + convert(varchar(55), t3.table_name) + ' TO new_user_name go' FROM sysuserperm t1, systableperm t2, systable t3, sysobjects t4 WHERE t1.user_id = t2.grantee AND t2.stable_id = t3.table_id AND t1.user_name = 'existing_user_name' AND t3.table_name = t4.name AND selectauth = 'Y'
Erstellt die GRAND Anweisung um INSERT-Rechte eines Users auf Objekte/Tabellen zu clonen/kopieren
SELECT 'GRANT INSERT ON ' + user_name(t4.uid) + '.' + convert(varchar(55), t3.table_name) + ' TO new_user_name go' FROM sysuserperm t1, systableperm t2, systable t3, sysobjects t4 WHERE t1.user_id = t2.grantee AND t2.stable_id = t3.table_id AND t1.user_name = 'existing_user_name' AND t3.table_name = t4.name AND insertauth = 'Y'
Erstellt die GRAND Anweisung um UPDATE-Rechte eines Users auf Objekte/Tabellen zu clonen/kopieren
SELECT 'GRANT UPDATE ON ' + user_name(t4.uid) + '.' + convert(varchar(55), t3.table_name) + ' TO new_user_name go' FROM sysuserperm t1, systableperm t2, systable t3, sysobjects t4 WHERE t1.user_id = t2.grantee AND t2.stable_id = t3.table_id AND t1.user_name = 'existing_user_name' AND t3.table_name = t4.name AND updateauth = 'Y'
Erstellt die GRAND Anweisung um DELETE-Rechte eines Users auf Objekte/Tabellen zu clonen/kopieren
SELECT 'GRANT DELETE ON ' + user_name(t4.uid) + '.' + convert(varchar(55), t3.table_name) + ' TO <user_name> go' FROM sysuserperm t1, systableperm t2, systable t3, sysobjects t4 WHERE t1.user_id = t2.grantee AND t2.stable_id = t3.table_id AND t1.user_name = 'existing_user_name' AND t3.table_name = t4.name AND deleteauth = 'Y'
Erstellt die GRAND Anweisung um ALTER-Rechte eines Users auf Objekte/Tabellen zu clonen/kopieren
SELECT 'GRANT ALTER ON ' + user_name(t4.uid) + '.' + convert(varchar(55), t3.table_name) + ' TO new_user_name go' FROM sysuserperm t1, systableperm t2, systable t3, sysobjects t4 WHERE t1.user_id = t2.grantee AND t2.stable_id = t3.table_id AND t1.user_name = 'existing_user_name' AND t3.table_name = t4.name AND alterauth = 'Y'
tastic wrote:
thanx. this is very helpfull!
Link | September 8th, 2009 at 10:47