Prüfen ob Rolle in DB existiert?

8

Ich möchte Benutzer in derselben Rolle in mehr als einer Datenbank hinzufügen. Die Rolle kann / kann jedoch nicht in der gesamten Datenbank vorhanden sein. Wie kann ich überprüfen, ob die Rolle in der Datenbank vorhanden ist und ob sie Benutzer in dieser Rolle hinzufügt?

z.B. IF-Rolle existiert START     Benutzer in Rolle hinzufügen ENDE

    
sanjeev40084 02.02.2010, 14:52
quelle

4 Antworten

15

versuchen:

%Vor%     
Yada 02.02.2010, 14:55
quelle
7
%Vor%     
Aaron Bertrand 02.02.2010 14:56
quelle
4

Ich kann noch nichts kommentieren, also muss ich das als Antwort hinzufügen.

Ich möchte so spezifisch wie möglich sein, weshalb ich den Haupttyp vorziehe. Deshalb habe ich Aarons Antwort gewählt.

Die Verwendung von DATABASE_PRINCIPAL_ID kann zu unerwarteten Ergebnissen führen, wenn ein anderer Haupttyp mit demselben Namen wie die Rolle vorhanden ist, die Sie hinzufügen möchten. Dies liegt daran, dass DATABASE_PRINCIPAL_ID die ID-Nummer eines Prinzipals in der aktuellen Datenbank zurückgibt, nicht speziell für einen Principal mit einer Art Datenbankrolle.

Nehmen wir an, Sie haben einen Benutzer mit demselben Namen wie die Datenbankrolle. Der Status von Yadas Skript würde auf Erfolg hinweisen, aber es würde die Rolle nicht hinzufügen, weil es bereits einen Prinzipal mit diesem Namen gibt. Aarons Skript würde jedoch den folgenden Fehler zurückgeben:

  

Der Name der Benutzer, Gruppen oder Rollen ist bereits in der aktuellen Datenbank vorhanden.

Ich möchte dieses Problem lieber frühzeitig (z. B. beim Ausführen des Skripts) als später (z. B. wenn meine App verwendet wird) erfassen.

Folgendes würde ich normalerweise verwenden:

%Vor%

Wenn ich wirklich mit diesem Szenario umgehen und keinen Fehler anzeigen möchte, könnte ich etwas wie folgt verwenden:

%Vor%     
timb 28.01.2013 20:52
quelle
0

Um die Datenbank anzugeben, in der Sie die Rolle erstellen würden, müssen Sie

verwenden %Vor%

Dann könntest du Yadas Antwort fortsetzen und es wird so sein.

%Vor%     
mohammad ha 17.01.2017 15:37
quelle