SQL Collation ändern

Aus MyWiki
Zur Navigation springen Zur Suche springen

Muss auf einem SQL Server die Collation geändert werden (bsp. von Latin1_General_100_CI_AS auf Latin1_General_CI_AS) kann wie folgt vorgegangen werden.

  1. Datenbanken aushägen (Detach) deren Collation nicht geändert werden dürfen/sollen oder die bereits die richtige Collation haben
  2. SQL Server Dienst stoppen
  3. auf der Commandline in das SQL Server Verzeichnis wechseln und folgenden Befehl ausführen: sqlservr -m -T4022 -T3659 -q"Latin1_General_CI_AS"
    der SQL Server wird dabei im "single user mode" gestartet und ändert dabei alle Datenbanken und Tabellen auf die neue Collation.
  4. Warten bis die Meldungen "The default collation was successfully changed" und "Recovery is complete..." erscheinen.
    Der Vorgang kann recht lange dauern und es kann lange dauern bis zwischendurch Meldungen (z.B. index restored for...) angezeigt werden.
    Meldungen mit "Error 17187 .... SQL Server is not ready...." können ignoriert werden, da der Server keine weiteren Verbindungen zulässt.
  5. SQL Server Dienst starten
  6. ausgehängte Datenbanken wieder einghängen (Attach)
  7. Prüfen der Collation mit folgenden SQL Befehl: select name, collation_name from sys.databases


Die Parameter unter 3. bewirken folgendes:

-T4022 = forces SQL Server to skip startup stored procedures
-T3659 = allows logging all errors to sql server logs
-m = single user mode
-q = rebuilds all databases and objects to the specified collation
-s "<Instanzname>" = gibt bei Bedarf die Instanz an


Quellen:
https://www.sanssql.com/2013/10/change-sql-server-collation-without.html

https://www.mssqltips.com/sqlservertip/3519/changing-sql-server-collation-after-installation/