Wie ändere ich die Sortierung einer SQL Server-Datenbank?

Wie ändere ich die Sortierung einer SQL Server-Datenbank?

Ich versuche, alle Datenbanken auf eine einzige Sortierung zu standardisieren – Latin1_General_CI_AS (die Standardsortierung). Ich habe einige Datenbanken, die in SQL_Latin1_General_CP1_CI_AS vorliegen.

Ich weiß, dass ich ALTER DATABASE verwenden kann, um die Datenbanksortierung zu ändern, aber das betrifft nur neue Objekte. Meines Wissens besteht die einzige Möglichkeit, vorhandene Spalten zu ändern darin, ALTER COLUMN für jede Spalte in jeder Tabelle auszuführen – und selbst dafür müsste ich alle Indizes löschen und neu erstellen.

Ich schätze, es würde ungefähr so ​​aussehen:

DROP INDEX indexname ON tablename

GO

ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL

GO

CREATE CLUSTERED INDEX indexname ON tablename (columname ASC)

und wiederholen Sie dies für jede varchar-, char-, text-, nvarchar-, nchar- und ntext-Spalte in der gesamten Datenbank. Das wäre eineenormSQL-Skript.

Gibt es hierfür eine einfachere Möglichkeit, oder kann jemand eine Möglichkeit vorschlagen, die Erstellung eines entsprechenden SQL-Skripts zu automatisieren?

Antwort1

MS KB 325335bietet Optionen, wie dies für die gesamte Datenbank und alle Spalten durchgeführt werden kann.

Grundsätzlich:

  1. Skript-Datenbanktabellen (mit neuer Sortierung)
  2. DTS/SSIS-Daten (Sortierung beobachten)
  3. Einschränkungen hinzufügen

Antwort2

Möglicherweise sind noch einige Anpassungen erforderlich, aber mit dem Dienstprogramm „SQL Server 2000 Collation Changer“ hatte ich Erfolg: http://www.codeproject.com/KB/database/ChangeCollation.aspx

Antwort3

Leider ist dies in SQL Server keine leichte Aufgabe.

Sie können ein Skripttool wie SQL Compare von Redgate für Ihre vorhandenen Datenbankobjekte (Tabellen, gespeicherte Prozeduren, Ansichten usw.) verwenden. Wenn Sie keine Lizenz haben, können Sie die kostenlose Testversion verwenden. Nachdem Sie die neue Datenbank mit der richtigen Sortierung erstellt und die Objekte aus Ihrem Skript neu erstellt haben, können Sie SSIS ausführen, um Daten von einer Datenbank in eine andere zu übertragen. Wenn Sie viele Daten haben, verwenden Sie T-SQL Bulk Insert.

Um für zukünftige Datenbanken auf diesem Server die richtige Sortierung zu haben, können Sie die Standardsortierung auf dem Server ändern. Der folgende MSDN-Artikel erklärt, was sich durch die Verwendung der COLLATE-Klauseln von ALTER DATABASE und ALTER TABLE ändert:

Festlegen und Ändern der Datenbanksortierung (SQL Server 2008-Onlinedokumentation)

Sie können die Sortierung aller neuen Objekte ändern, die in einer Benutzerdatenbank erstellt werden. Verwenden Sie dazu die COLLATE-Klausel derALTER DATABASEAnweisung. Diese Anweisung ändert nicht die Sortierung der Spalten in vorhandenen benutzerdefinierten Tabellen. Diese können mithilfe der COLLATE-Klausel vonALTER TABLE.

Wenn Sie die Datenbanksortierung ändern, ändern Sie Folgendes:

  • Die Standardsortierung für die Datenbank. Diese neue Standardsortierung wird auf alle Spalten, benutzerdefinierten Datentypen, Variablen und Parameter angewendet, die anschließend in der Datenbank erstellt werden. Sie wird auch verwendet, wenn die in SQL-Anweisungen angegebenen Objektbezeichner anhand der in der Datenbank definierten Objekte aufgelöst werden.
  • Alle Char-, Varchar-, Text-, Nchar-, NVarchar- oder Ntext-Spalten in Systemtabellen werden in die neue Sortierung geändert.
  • Alle vorhandenen Char-, Varchar-, Text-, Nchar-, NVarchar- oder Ntext-Parameter und skalaren Rückgabewerte für gespeicherte Prozeduren und benutzerdefinierte Funktionen werden auf die neue Sortierung geändert.
  • Die Systemdatentypen char, varchar, text, nchar, nvarchar oder ntext und alle benutzerdefinierten Datentypen, die auf diesen Systemdatentypen basieren, werden auf die neue Standardsortierung geändert.

Antwort4

Probieren Sie dieses Dienstprogramm aus, das bei einer gegebenen Quelldatenbank alle Skripte generiert, die auf einer Zieldatenbank angewendet werden müssen, damit die Sortierung sicher geändert wird.

verwandte Informationen