Microsoft SQL Server (MSSQL) Msg 15150 Cannot Alter The User ‘dbo’

Wenn man einen SQL Benutzer nicht vom SQL-Server entfernen kann, weil dieser Fehler auftritt („Error: 15150“), hat der Benutzer vermutlich noch ein Datenbankschema im Besitz.

Lösung

Der Besitz der Datenbank (des Schemas) muss einfach wieder „mit Gewalt“ übergeben werden. Wir machen das in aller Regel für den SA und vergeben dann als dieser neue Berechtigungen.

Use <DATENBANK>
GO
sp_changedbowner 'sa'
GO

Microsoft SQL Server 15128 „Die Optionen CHECK_POLICY und CHECK_EXPIRATION können nicht auf OFF festgelegt werden, wenn MUST_CHANGE auf ON festgelegt ist“


Problem

Nach der Anlage eines neuen SQL-Benutzers möchte der Admin den Haken bei „Benutzer muss das Kennwort bei der nächsten Anmeldung ändern“ entfernen. Das SQL Management Sudio beschwert sich darauf hin aber, das „MUST_CHANGE auf ON“ festgelegt sei:

Die Optionen CHECK_POLICY und CHECK_EXPIRATION können nicht auf OFF festgelegt werden, wenn MUST_CHANGE auf ON festgelegt ist. (Microsoft SQL Server, Fehler: 15128)

Lösung

Das Kennwort muss geändert werden, erst dann kann man die Optionen wieder anpassen. Die „Änderung“ kann aber auch das selbe Kennwort wie vorher sein.

Kurzfassung in T-SQL:

USE master;
ALTER LOGIN <sqluser> WITH PASSWORD = '<kennwort>';
ALTER LOGIN <sqluser> WITH CHECK_EXPIRATION = OFF; // Kennwortablauf
ALTER LOGIN <sqluser> WITH CHECK_POLICY = OFF; // Kennwortrichtlinie

Microsoft SQL-Server (MSSQL) Version und Edition anzeigen

Und schon wieder so ein Fall von Selbst-Notiz. JEDESMAL muss ich googeln wie man die Version oder Edition des grade genutzten MS SQL-Servers anzeigt 🙄

Version anzeigen

SELECT @@version

Edition und Version anzeigen

SELECT
  CASE 
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '8%' THEN 'SQL2000'
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '9%' THEN 'SQL2005'
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '10.0%' THEN 'SQL2008'
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '10.5%' THEN 'SQL2008 R2'
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '11%' THEN 'SQL2012'
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '12%' THEN 'SQL2014'
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '13%' THEN 'SQL2016'     
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '14%' THEN 'SQL2017' 
     WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '15%' THEN 'SQL2019' 
     ELSE 'unknown'
  END AS Produktversion,
  SERVERPROPERTY('ProductLevel') AS Patchlevel,
  SERVERPROPERTY('Edition') AS Edition,
  SERVERPROPERTY('ProductVersion') AS Build

Aktivierung des ’sa‘ Benutzers auf SQL Server Express Edition

Problem

Auf neuen SQL Express Edition Installationen ist der sa-Benutzer meist noch nicht aktiviert. Per Default ist nur die Windows-Authentifizierung eingeschaltet, was die Nutzugn des SQL-Benutzer ’sa‘ verhindert.

Lösung

Zuerst aktivert man im SQL-Server die ‚gemischte Authentifizierung‘.

So ändert man den Authentifizierungsmodus des SQL Server (SQL-Authentifizierung zulassen)

  1. Ausführen des SQL Management Studio „Als Administrator“
  2. Verbindung mit der Instanz herstellen (Windows-Authentifizierung)
  3. Im Objekt-Explorer ganz oben auf das Wurzelelement (die SQL-Server Instanz) mit der rechten Maustaste die Eigenschaften öffnen
  4. Link unter dem Punkt Sicherheit unter der Serverauthentifizierung den neuen gemischten Serverauthentifizierungsmodus auswählen und mit OK bestätigen
  5. SQL-Dienst neu starten (Im Objekt-Explorer mit der rechten Maustaste auf den Server ganz oben und dann auf Neu starten)

SA-Benutzer einschalten

An der SQL-Konsole, sofern man als Administrator vernbunde ist, reichen diese beiden schnellen Befehle:

ALTER LOGIN sa ENABLE ;  
GO  
ALTER LOGIN sa WITH PASSWORD = '123NEUES_SA_KENNWORT12343' ;  
GO  

SQL Express 2012/2014 Windows Authentifizierung nach crash zurücksetzen

Problem

Der Microsoft SQL Server Express Edition ist sehr praktisch, aber leider nach der Installation auch leicht zu übersehen. Nach einem Domänenwechsel, Domänen-Autritt oder einem Crash (der zum Verlust der Anmeldekonten führte) ist eine SQL-Express-Instanz nicht mehr zugänglich. Standardmäßig sind nur Windows-Anmeldungen erlaubt, die es nun ja nicht mehr gibt.

„Zugriff verweigert“ oder „Access to Database denied“ lauten die Fehlermeldungen dazu.

Lösung

Man kann die Authentifizierung im SQLEE insofern zurücksetzen, als das man sein eigenes Anmeldekonto (sofern administrativ) zum SYSADMIN in der Datenbankinstanz macht. Dann kann mann sich wieder anmelden, die Rechte zurücksetzen und seine Datenbanken richtig konfigurieren.

Dazu muss die Datenbank im „Einzelbenutzermodus“ gestartet werden:

  • SQL Server Configuration manager („SQL Server 2014-Konfigurations-Manager“) öffnen
  • Links im Baum unter den „SQL Server-Diensten“ rechts den SQL Server auswählen
  • Eigenschaften > Startparameter > „-m“ hinzufügen („Add“), ohne Anfürungszeichen
  • Dienst neu starten (nun ist die DB im Einzelbenutzermodus)
  • Mit SQLCMD zur Instanz verbinden:
C:\> "%ProgramFiles%\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\SQLCMD.EXE" -S .\<INSTANZNAME>
  • Am SQL Prompt dann den Admin hinzufügen
1> EXEC sp_addsrvrolemember '<SERVER/DOMAINNAME>\<BENUTZER>', 'sysadmin'
2> GO
1> exit
  • Dann den Startparameter „-m“ wieder entfernen, den Dienst neu starten und an der Instanz mit dem gerade hinzugefügten Konto anmelden.

Fertig 🙂