Ich muss überprüfen, ob auf dem SQL Server bereits ein bestimmtes Login vorhanden ist. Wenn dies nicht der Fall ist, muss ich es hinzufügen.
Ich habe den folgenden Code gefunden, um die Anmeldung tatsächlich zur Datenbank hinzuzufügen, aber ich möchte dies (irgendwie) in eine IF-Anweisung einschließen, um zu überprüfen, ob die Anmeldung zuerst vorhanden ist.
CREATE LOGIN [myUsername] WITH PASSWORD=N'myPassword',
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
Ich verstehe, dass ich eine Systemdatenbank abfragen muss, bin mir aber nicht sicher, wo ich anfangen soll!
sql-server
login
Brett Rigby
quelle
quelle
Antworten:
Von hier aus
quelle
x] with password ''y'';\r\ndrop table foo;\r\n
CREATE LOGIN [@loginName] FROM ...
? Verzeihen Sie meine Unwissenheit, ich würde gerne lernen ...QUOTENAME()
geht herum@loginName
, nicht die ganze Aussage, und dann können Sie die manuellen [und] Trennzeichen loswerden@loginName
.In SQL Server 2005 und höher können Sie dies folgendermaßen tun, ohne die veraltete Ansicht "Syslogins" zu verwenden:
Die Ansicht server_principals wird anstelle von sql_logins verwendet, da letztere keine Windows-Anmeldungen auflistet.
Wenn Sie vor dem Erstellen überprüfen müssen, ob ein Benutzer in einer bestimmten Datenbank vorhanden ist, können Sie Folgendes tun:
quelle
Als geringfügige Ergänzung zu diesem Thread möchten Sie im Allgemeinen vermeiden, die Ansichten zu verwenden, die mit sys.sys * beginnen, da Microsoft sie nur aus Gründen der Abwärtskompatibilität einschließt. Für Ihren Code sollten Sie wahrscheinlich sys.server_principals verwenden. Dies setzt voraus, dass Sie SQL 2005 oder höher verwenden.
quelle
Sie können die eingebaute Funktion verwenden:
über
mögen:
https://technet.microsoft.com/en-us/library/ms176042(v=sql.110).aspx
quelle
Versuchen Sie dies (ersetzen Sie 'Benutzer' durch den tatsächlichen Anmeldenamen):
quelle
Dies funktioniert unter SQL Server 2000.
Ändern Sie in SQL 2005 die 2. Zeile in
Ich bin mir bei SQL 2008 nicht sicher, aber ich vermute, dass es mit SQL 2005 identisch sein wird. Wenn nicht, sollte dies Ihnen eine Vorstellung davon geben, wo Sie anfangen sollen zu suchen.
quelle
Was genau möchten Sie für Login oder Benutzer überprüfen? Auf Serverebene wird eine Anmeldung erstellt, und auf Datenbankebene wird ein Benutzer erstellt, sodass eine Anmeldung auf dem Server eindeutig ist
Außerdem wird ein Benutzer für eine Anmeldung erstellt. Ein Benutzer ohne Anmeldung ist ein verwaister Benutzer und nicht nützlich, da keine SQL Server-Anmeldung ohne Anmeldung durchgeführt werden kann
Vielleicht brauchst du das
auf Login prüfen
Die obige Abfrage gibt 'X' zurück, wenn die Anmeldung vorhanden ist. Andernfalls wird null zurückgegeben
Erstellen Sie dann ein Login
Dadurch wird ein Login in SQL Server erstellt, es werden jedoch nur sichere Kennwörter akzeptiert
Erstellen Sie in jeder Datenbank, unter der Sie sich anmelden möchten, einen Benutzer
Weisen Sie dem Benutzer Ausführungsrechte zu
SIE MÜSSEN SYSADMIN-Berechtigungen haben oder kurz 'sa' sagen
Sie können dafür eine SQL-Prozedur in eine Datenbank schreiben
quelle
Um Namenskonflikte zwischen Anmeldungen, Rollen, Benutzern usw.
type
zu vermeiden, sollten Sie die Spalte gemäß der Dokumentation zu Microsoft sys.database_principals überprüfenVerwenden Sie
N'<name>'
und[<name>]
entsprechend , um mit speziellen Zeichen in Benutzernamen usw. umzugehen .Login erstellen
Datenbankbenutzer erstellen
Datenbankrolle erstellen
Benutzer zur Rolle hinzufügen
Gewährung von Rollenrechten
quelle
Dies gilt für Azure SQL:
Quelle: So überprüfen Sie, ob der Datenbankbenutzer bereits in der Azure SQL-Datenbank vorhanden ist
quelle
Zuerst müssen Sie die Existenz der Anmeldung mithilfe der Syslogins-Ansicht überprüfen:
Dann müssen Sie Ihre Datenbankexistenz überprüfen:
quelle