Benutzerrechte auf Objekte im ASIQ clonen

April 3, 2009

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'

tags: , , ,
posted in asiq by fm

Follow comments via the RSS Feed | Einen Kommentar hinterlassen | Trackback URL

1 Comment to "Benutzerrechte auf Objekte im ASIQ clonen"

  1. tastic wrote:

    thanx. this is very helpfull!

Leave Your Comment

You must be logged in to post a comment.

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org