Freigeben über


Festlegen oder Ändern der Datenbanksortierung

Gilt für: SQL Server Azure SQL Managed Instance

In diesem Artikel wird beschrieben, wie Sie die Datenbanksortierung mithilfe von SQL Server Management Studio (SSMS) oder Transact-SQL einstellen oder ändern.

Wenn keine Datenbanksortierung angegeben ist, wird die Serversortierung verwendet.

Empfehlungen

Die unterstützten Sortiernamen finden Sie im Name der Windows-Sortierung und Name der SQL Serversortierung; oder Sie können die Systemfunktion sys.fn_helpcollations verwenden.

Das Ändern der Datenbanksortierung ändert Folgendes:

  • Alle char-, varchar-, text-, nchar-, nvarchar- und ntext -Spalten in Systemtabellen erhalten die neue Sortierung.

  • Sämtliche vorhandene char-, varchar-, text-, nchar-, nvarchar- und ntext -Parameter und skalare Rückgabewerte für gespeicherte Prozeduren und benutzerdefinierte Funktionen erhalten die neue Sortierung.

  • Die Systemdatentypen char, varchar, text, ncharoder nvarcharoder ntext sowie alle benutzerdefinierten Datentypen, die auf Systemdatentypen basieren, erhalten die neue Standardsortierung.

Sie können die Sortierung neuer Objekte, die in einer Benutzerdatenbank erstellt werden, mithilfe der COLLATE-Klausel der ALTER DATABASE-Anweisung ändern. Diese Anweisung ändert jedoch nicht die Sortierung der Spalten in vorhandenen benutzerdefinierten Tabellen. Letztere können mithilfe der COLLATE-Klausel der ALTER TABLE-Anweisung geändert werden.

Berechtigungen

Um eine neue Datenbank zu erstellen, benötigen Sie die Berechtigung CREATE DATABASE in der Datenbank master oder die Berechtigung CREATE ANY DATABASE oder ALTER ANY DATABASE.

Um die Sortierung einer bestehenden Datenbank zu ändern, benötigen Sie die Berechtigung ALTER für die Datenbank.

Festlegen oder Ändern der Datenbanksortierung

Sie können die Datenbanksortierung mit SQL Server Management Studio (SSMS) oder Transact-SQL (T-SQL) einstellen oder ändern.

Sie können die Sortierreihenfolge für eine neue Datenbank festlegen oder die Sortierreihenfolge für eine vorhandene Datenbank aktualisieren, indem Sie SQL Server Management Studio (SSMS) verwenden.

Öffnen Sie in SQL Server Management Studio den Objekt-Explorer, stellen Sie eine Verbindung zu einer Instanz des SQL Server-Datenbank-Engines her, erweitern Sie diese Instanz und erweitern Sie dann Datenbanken:

  • Für eine neue Datenbank: Klicken Sie mit der rechten Maustaste auf Datenbanken und wählen Sie dann Neue Datenbank. Wenn Sie die Standardsortierung nicht verwenden möchten, navigieren Sie zur Seite Optionen, und wählen Sie eine Sortierung aus der Dropdownliste Sortierung aus.
  • Für eine bestehende Datenbank: Klicken Sie mit der rechten Maustaste auf die gewünschte Datenbank und wählen Sie Eigenschaften. Navigieren Sie zur Seite Optionen, und wählen Sie eine Sortierung aus der Dropdownliste Sortierung aus.

Daten nach Änderung der Sortierung

Wichtig

Durch das Ändern der Sortierung einer Datenbank oder einzelner Spalten werden nicht die zugrunde liegenden Daten geändert, die bereits in vorhandenen Tabellen gespeichert sind. Wenn Ihre Anwendung nicht explizit für die Datenkonvertierung und den Vergleich zwischen verschiedenen Sortierungen zuständig ist, wird empfohlen, dass Sie die in der Datenbank vorhandenen Daten in die neue Sortierung übertragen. Dadurch entfällt das Risiko, dass Anwendungen Daten möglicherweise falsch ändern, was zu falschen Ergebnissen oder einem stillen Datenverlust führen kann.

Wenn die Sortierung einer Datenbank geändert wird, erben nur neue Tabellen standardmäßig die neue Datenbanksortierung. Es gibt einige Alternativen zum Konvertieren vorhandener Daten in die neue Sortierung:

  • Konvertieren Sie die Daten direkt. Informationen zum Konvertieren der Sortierung einer Spalte in einer vorhandenen Tabelle finden Sie unter Festlegen oder Ändern der Spaltensortierung. Dieser Vorgang ist leicht zu implementieren, kann jedoch bei großen Tabellen und ausgelasteten Anwendungen zu einem Blockierproblem führen. Das folgende Beispiel zeigt eine direkte Konvertierung der MyString-Spalte in eine neue Sortierung:

    ALTER TABLE dbo.MyTable
        ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
    
  • Kopieren Sie die Daten in neue Tabellen, die die neue Sortierung verwenden, und ersetzen Sie die ursprünglichen Tabellen in derselben Datenbank. Erstellen Sie eine neue Tabelle in der aktuellen Datenbank, die die Datenbanksortierung erbt, kopieren Sie die Daten von der alten Tabelle in die neue Tabelle, löschen Sie die ursprüngliche Tabelle, und ändern Sie den Namen der neuen Tabelle in den der ursprünglichen. Hierbei handelt es sich um einen schnelleren Vorgang als eine direkte Konvertierung, der allerdings zu einer Herausforderung werden kann, wenn komplexe Schemas mit Abhängigkeiten wie Fremdschlüsseleinschränkungen, Primärschlüsseleinschränkungen und Triggern beteiligt sind. Darüber hinaus ist vor der endgültigen Trennung eine abschließende Datensynchronisierung zwischen der ursprünglichen und der neuen Tabelle erforderlich, wenn die Daten weiterhin von Anwendungen geändert werden. Das folgende Beispiel zeigt eine Konvertierung der MyString-Spalte in eine neue Sortierung durch Kopieren und Ersetzen:

    CREATE TABLE dbo.MyTable2 (MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8);
    
    INSERT INTO dbo.MyTable2
    SELECT * FROM dbo.MyTable;
    
    DROP TABLE dbo.MyTable;
    
    EXEC sp_rename 'dbo.MyTable2', 'dbo.MyTable';
    
  • Kopieren Sie die Daten in eine neue Datenbank, die die neue Sortierung verwendet, und ersetzen Sie die ursprüngliche Datenbank. Erstellen Sie eine neue Datenbank mit der neuen Sortierung, und übertragen Sie die Daten aus der ursprünglichen Datenbank mithilfe von Tools wie den Integration Services oder dem Import/Export-Assistenten in SQL Server Management Studio. Dies ist ein einfacherer Ansatz für komplexe Schemas. Darüber hinaus ist vor der endgültigen Trennung eine abschließende Datensynchronisierung zwischen den ursprünglichen und den neuen Datenbanken erforderlich, wenn die Daten weiterhin von Anwendungen geändert werden.

Begrenzungen

  • Nur-Unicode-Sortierungen unter Windows können nur mit der COLLATE-Klausel verwendet werden, um auf Spalten- und Ausdrucksebene Sortierungen auf die Datentypen nchar, nvarchar und ntext anzuwenden. Sie können nicht mit der COLLATE-Klausel verwendet werden, um die Sortierung einer Datenbank oder Serverinstanz zu ändern.

  • Wenn die angegebene Sortierung oder die Sortierung des Objekts, auf das verwiesen wird, eine Codepage verwendet, die nicht von Windows unterstützt wird, zeigt die Datenbank-Engine einen Fehler an.

  • Die Sortierung auf Serverebene in der Azure SQL Managed Instance kann beim Erstellen der Instanz festgelegt werden. Sie kann später nicht mehr geändert werden. Weitere Informationen finden Sie unter Festlegen oder Ändern der Serversortierung.

Wichtig

Die ALTER DATABASE COLLATE-Anweisung wird in Azure SQL-Datenbank nicht unterstützt. Geben Sie die Sortierung der Datenbank und die Katalogsortierung zum Zeitpunkt von CREATE DATABASE an.