Das Exportieren aller Daten (einschließlich Anmeldungen, Verbindungsservern, SQL Agent-Jobs, DB Mail-Einstellungen usw.) und das Neuerstellen der Daten auf Instanzebene sowie das erneute Laden aller Benutzerdaten sind sehr aufwändig. Und auch nach alledem gibt es keine Garantie, dass Sie die Standardkollatierung einer Datenbank über aktualisieren können, ALTER DATABASE
da verschiedene Bedingungen den Abschluss des Vorgangs verhindern (weitere Informationen finden Sie im Abschnitt "Ändern der Datenbankkollatierung" in der ALTER DATABASE
Dokumentation ). .
Es gibt jedoch eine undokumentierte Methode, die viel einfacher ist. Der Hauptnachteil ist, dass es nicht unterstützt wird. Das soll nicht heißen, dass irgendetwas schief gehen wird, nur, dass Microsoft nicht helfen wird, es zu beheben, wenn etwas passiert (weil sie nie garantiert haben, dass es funktionieren würde).
Die Methode, von der ich spreche, läuft sqlservr.exe
mit dem -q {new_collation_name}
Schalter. Es gibt ein bisschen mehr als das, aber das ist die Grundidee. Diese Methode aktualisiert einfach die System-Metadaten, was Vorteile und Konsequenzen hat. Die wichtigsten sind:
LEISTUNGEN
- sehr schnell
- Umgehen Sie die meisten Einschränkungen, die das
ALTER DATABASE
Arbeiten verhindern
- Wahrscheinlich viel genauer als jedes Skript, das die Leute im Laufe der Jahre erfunden haben, um Objekte abzulegen und neu zu erstellen
DRAWBACKS
- Nicht unterstützt, wenn etwas schief geht
VARCHAR
Daten können sich ändern, WENN sich die Codepage zwischen der alten und der neuen Kollatierung unterscheidet und Zeichen mit Werten von 128 - 255 (0x80 - 0xFF) vorhanden sind und diese Zeichen nicht als dasselbe Zeichen mit demselben Wert im neuen Code vorhanden sind Seite. Es besteht also die Möglichkeit eines Datenverlusts, und Ihre Daten müssen erst untersucht werden, um sicherzustellen, dass diese Bedingung nicht vorliegt. Dies bedeutet jedoch auch, dass es viele Fälle gibt, in denen nur Zeichen mit Werten von 0 bis 127 vorkommen, die selbst bei einer Änderung der Codepage nicht gefährdet sind.
- Benutzerdefinierte Tabellentypen (UDTTs) werden übersprungen und müssen manuell aktualisiert werden.
Eine ausführliche Beschreibung der Funktionsweise der sqlservr.exe -q
Methode (einschließlich Einzelheiten zur Funktionsweise von Kollatierungen auf den verschiedenen Ebenen und mögliche Probleme, auf die Sie achten müssen) finden Sie in meinem Beitrag:
Ändern der Sortierung der Instanz, der Datenbanken und aller Spalten in allen Benutzerdatenbanken: Was könnte möglicherweise schief gehen?
So ändern Sie nur die Instanz (einschließlich den Systemdatenbanken: master
, model
, msdb
, und tempdb
) und einer oder mehr Datenbanken (aber nicht alle Datenbanken), einfach die Datenbank trennen (n) , dass Sie von dieser Operation ausschließen möchten, und dann wieder fixieren Sobald die Sortierungsaktualisierung abgeschlossen ist.