Hallo,
ich habe folgendes Problem. Ich arbeite auf einem Windows Server 2003 mit einer MS SQL 2008 Datenbank. Ich musste auf dem Server die Kennwortrichtlinien aktivieren. Nun lassen sie die für den DB Zugriff benötigten User nicht mehr anlegen. Dies passiert durch ein Skript. Das Passwort entspricht nun nicht mehr den Richtlinien, darf aber auch nicht geändert werden. Google sagt, nutze CREATE USER und setzte CHECK_POLICY = OFF. In der Doku zu sp_addlogin und sp_grantdbaccess steht bei beiden, dass man es nicht mehr nutzen und es durch CREATE USER ersetzen soll. Aber wie? Ich habe leider keine Ahnung von SQL. Habe bereits ein paar erfolglose Versuche gestartet. Kann mir vielleicht jemand weiterhelfen.
Was genau machen eigentlich sp_addlogin und sp_grantdbaccess, wenn ich sie doch beide durch CREATE USER ersetzten soll?
MINIMALBEISPIEL:
DECLARE @DatabaseUsername varchar(255), @DatabasePassword varchar(255) SET @DatabaseUsername = N'TEST_USER' SET @DatabasePassword = N'testPW' /* ****************** */ /* *** Runtime_DB *** */ /* ****************** */ -- Drop login data only if the Runtime_DB exists IF EXISTS (SELECT * FROM master.dbo.sysdatabases WHERE name = 'Runtime_DB') BEGIN -- Drop all users from the runtime database USE Runtime_DB exec sp_dropuser @DatabaseUsername END -- Drop all logins from the all databases (users should be dropped before) exec sp_droplogin @DatabaseUsername -- Add login for, all databases exec sp_addlogin @DatabaseUsername, @DatabasePassword /* ****************** */ /* *** Runtime_DB *** */ /* ****************** */ -- Set login data only if the Runtime_DB exists IF EXISTS (SELECT * FROM master.dbo.sysdatabases WHERE name = 'Runtime_DB') BEGIN -- All following operations should apply the runtime database USE Runtime_DB -- Add the DatabaseUser login back. EXEC sp_grantdbaccess @DatabaseUsername, @DatabaseUsername END
Ich bekomme folgende Fehlermeldung, wobei die erste ja klar ist:
Meldung 15008, Ebene 16, Status 1, Prozedur sp_dropuser, Zeile 12
Der Benutzer 'TEST_USER' ist in der aktuellen Datenbank nicht vorhanden.
Meldung 15007, Ebene 16, Status 1, Prozedur sp_droplogin, Zeile 26
'TEST_USER' ist kein gültiger Anmeldename, oder Sie haben nicht die erforderliche Berechtigung.
Meldung 15116, Ebene 16, Status 1, Zeile 1
Fehler bei der Kennwortüberprüfung. Das Kennwort ist zu kurz und erfüllt daher nicht die Anforderungen der Windows-Richtlinie.
Meldung 15007, Ebene 16, Status 1, Zeile 1
'TEST_USER' ist kein gültiger Anmeldename, oder Sie haben nicht die erforderliche Berechtigung.