EULANDA® ERP System Head Start thru Technology
Mit sp_addlogin wird ein Benutzerkonto (=Account) angelegt, dass einem Benutzer die Berechtigung gibt, sich über SQL-Authentifizierung am SQL-Server anzumelden. Dies funktioniert dementsprechend nur, wenn der SQL-Server auch diesen Authentifizierungs-Modus zulässt.
Nachdem für einen Benutzer mit sp_addlogin ein Konto angelegt wurde, kann dieser sich noch nicht an einer Datenbank anmelden. Hierzu müssen dem Benutzer noch mit sp_adduser die Berechtigung erteilt werden, sich an der betreffenden Datenbank anzumelden.
sp_addlogin @loginame varchar(128), @passwd varchar(128), @defdb varchar(128), @deflanguage varchar(128), @sid varbinary(16), @encryptopt varchar(20)
@LoginName varchar(128)
Dieser Parameter vom Typ sysname muss angegeben werden.
In LoginName dürfen keine Schrägstriche oder reservierte Namen wie sa, public usw. verwendet werden, ebenso darf nicht der Wert NULL benutzt werden.
@passwd varchar(128)
optional; default=NULL
Das Passwort vom Typ sysname muss nicht unbedingt angegeben werden. In diesem Fall wird es als NULL-Wert gespeichert. Wird ein Passwort angegeben, so wird dies standardmäßig verschlüsselt abgespeichert. Die Verschlüsselung kann über den Parameter @encryptopt beeinflusst werden.
@defdb varchar(128)
optional; default='master'
Zu jedem Login-Account kann eine Anmeldedatenbank angegeben werden. Der Parameter defdb ist vom Typ sysname. Wird keine Anmeldedatenbank übergeben, so wird die Standarddatenbank master als Anmeldedatenbank benutzt.
Diesen Default kann man in aller Regel belassen, da EULANDA® die Datenbank explizit über die UDL-Datei vorgibt.
@deflanguage varchar(128)
optional; default=NULL
Über deflanguage, die vom vom Datentyp sysname ist, kann einem Benutzer eine von der SQL-Server-Installation abweichende Sprache zugewiesen werden. Wird dieser Wert nicht übergeben, so wird dieser Wert als NULL gespeichert und es wird die Standardsprache des SQL-Server benutzt.
Sie sollten diesen Wert nicht angeben, also immer die Standardsprache benutzen.
@sid varbinary(16)
optional; default=NULL
Beim Anlegen eines Login-Accounts wird der Wert sid (=Sicherheits ID, oder Security ID) normalerweise nicht angegeben. In diesem Fall erzeugt der SQL Server einen nicht benutzten eindeutigen Wert. Wird die sid angegeben, so muss dafür gesorgt werden, dass der Wert eindeutig und noch von keinem Login-Account verwendet wird.
Wird eine Datenbank auf einem anderen SQL-Server aktiviert (z.B. über Backup), udn sollen die dort enthaltenen Datenbankbenutzer auch im SQL-Server als Login-Account angelegt werden, so kann dies erfolgen, indem die dort verwendete sid beim Anlegen des Login-Accounts verwendet wird. Für den SQL-Server sind nicht nur die Namen des Accounts maßgeblich, sondern auch die sid. Beide müssen stimmen, damit der Login-Account auch Datenbank-Benutzer sein kann.
Obwohl sid vom Typ varbinary ist, müssen bei sid immer alle 16 Zeichen angegeben werden.
@encryptopt varchar(20)
optional; default=NULL
Über diesen Parameter kann die Art der Verschlüsselung für das Speichern des Passwortes angegeben werden.
| NULL | Bei Angabe von NULL wird die Verschlüsselung aktiviert, was der Standard ist. |
| skip_encryption | Passworte werden unverschlüsselt gespeichert. |
| skip_encryption_old | Passworte werden nach einem alten in SQL 7 benutzten Verfahren verschlüsselt gespeichert. |
Gibt den Datentyp der
Argumente zurück.
| 0 | Erfolgreich ausgeführt |
| 1 | Fehler beim Ausführen |
EXEC sp_addlogin 'Eulanda', 'eulanda'
GO
Ein neues SQL-Benutzerkonto mit dem Namen Eulanda und Passwort eulanda wird angelegt. Das Konto darf hierbei nicht existieren.
Ausgabe:
Neue Anmeldung erstellt.
DECLARE @ret int
EXEC @ret=sp_addlogin 'Eulanda', 'eulanda'
SELECT @ret
GO
Hier wird die selbe Funktion mit den Parametern wie in Beispiel 1 aufgerufen, jedoch wird das Funktionsrgebnis der Variablen @ret zugewiesen. Das Ergebnis wird dann über den Select-Befehl ausgegeben. Bei 0 wurde die Funktion fehlerfrei ausgeführt.
Ausgabe:
Neue Anmeldung erstellt. ----------- 0 (1 row(s) affected)
Hinweis
Ein Account wird mit sp_droplogin
gelöscht.