Moin,

heute kam mir die Idee, dass es ja nicht verkehrt wäre, wenn man schnell prüfen könnte ob ein User überhaupt ein Recht auf eine Datenbank hat. Oder noch etwas schicker, auf welche Datenbanken hat der User denn überhaupt Rechte. Da ich nichts fertiges gefunden habe, gibt es eben ein eigenes Skript. Sollte auch wer anderes mal so etwas suchen, dann greift gerne zu. Evtl. dient das SQL-Skript auch nur als Basis und kann euch mit wenigen Anpassungen helfen euer Anliegen auszuführen.

 

-- ###################################################
-- Effektive Berechtigungen eines Benutzers auslesen #
-- ###################################################
USE master;
GO
-- optional das Skript als anderer Benutzer ausführen
EXECUTE AS LogIn = 'UserAnmeldeName';
GO

DECLARE @DatabaseName AS VARCHAR(100)
DECLARE @BerechtigungErg AS VARCHAR(100)
DECLARE Database_Cursor CURSOR FOR
-- Alle Datenbanken ermitteln
SELECT name
FROM sys.databases;
-- Schleife um jede Datenbank auf Berechtigungen zu prüfen
OPEN Database_Cursor;
FETCH NEXT FROM Database_Cursor INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Hier wird derzeit "ANY" als Berechtigung geprüft, dieses kann noch angepasst werden
-- Ebenso könnte das Skript noch erweitert werden, um einzelne Tabellenzugriffsrechte abzufragen
SET @BerechtigungErg = HAS_PERMS_BY_NAME (@DatabaseName, 'DATABASE', 'ANY');
Print 'Der User hat für die Datenbank: ' + @DatabaseName + ' eine Berechtigung (1=Ja): '+ @BerechtigungErg
FETCH NEXT FROM Database_Cursor INTO @DatabaseName;
END;
CLOSE Database_Cursor;
DEALLOCATE Database_Cursor;
GO