Januar 28, 2022

{coding}>

Wenn Sie eine Anwendung entwickeln oder einen Code im SQL-Datenbanksystem schreiben, ist es wichtig zu verstehen, wie Daten sortiert und verglichen werden. Sie können Ihre Daten in einer bestimmten Sprache speichern, oder Sie möchten, dass SQL Server Groß- und Kleinschreibung getrennt behandelt. Microsoft hat eine SQL Server-Einstellung namens Collation bereitgestellt, um solche Anforderungen zu steuern und zu adressieren.

Was ist Sortierung in SQL Server?

Wir können die Sortierung in SQL Server wie unten angegeben auf verschiedenen Ebenen festlegen.

  • Serverebene
  • Datenbankebene
  • Spaltenebene
  • Ausdrucksebene

Die Sortierung auf Serverebene kann manchmal als Sortierung auf SQL Server-Instanzebene bezeichnet werden.

Die Sortierung auf Datenbankebene wird von der Einstellung Sortierung auf Serverebene übernommen, wenn Sie während der Datenbankerstellung keine bestimmte Sortierung auswählen. Sie können die Sortierung auf Datenbankebene auch später ändern. Beachten Sie, dass das Ändern der Datenbanksortierung nur für anstehende oder neue Objekte angewendet wird, die nach der Sortierungsänderung erstellt werden.

Neue Sortierung ändert keine vorhandenen Daten, die in Tabellen gespeichert sind, die mit dem letzten Sortierungstyp sortiert wurden. Das Anwendungsteam benötigt aufgrund der neuen Kollatierungseinstellung eine weitere Planung, um diese Konvertierung gespeicherter Daten zu bewältigen.

Es gibt mehrere Möglichkeiten, dies zu tun. Eine besteht darin, die Daten aus der vorhandenen Tabelle in eine neue Tabelle zu kopieren, die mit der neuen Sortierung erstellt wurde, und dann die alte Tabelle durch die neue zu ersetzen. Sie können Ihre Tabellendaten auch in eine neue Datenbank verschieben, indem Sie eine neue Sortierung erstellen und die alte Datenbank durch die neue ersetzen.

HINWEIS: Das Ändern der Sortierung ist eine komplexe Aufgabe, die Sie vermeiden sollten, es sei denn, Sie haben einen obligatorischen Geschäftsfall.

Wie finde und ändere ich die Datenbanksortierung in SQL Server?

Überprüfen wir die Sortierung der SQL Server-Instanz und aller auf dieser Instanz gehosteten Datenbanken. Sie können die Sortierung überprüfen, indem Sie mit SQL Server Management Studio auf das Eigenschaftenfenster auf Datenbank- oder Instanzebene zugreifen oder einfach die folgende T-SQL-Anweisung ausführen. Die Sortierung für jede Datenbank wird im Systemobjekt sys gespeichert.datenbanken – wir greifen darauf zu, um diese Informationen zu erhalten.

--Check Database CollationSELECT name, collation_name FROM sys.databases GO --Check Server or Instance level CollationSELECT SERVERPROPERTY('Collation') As 

Ich habe die obige T-SQL-Anweisung ausgeführt und die folgende Ausgabe erhalten. Wir können sehen, dass alle Datenbanken und die Sortierung auf Serverebene dieselben Einstellungen wie SQL_Latin1_General_CP1_CI_AS haben. Dies bedeutet, dass Datenbanksortierungen beim Erstellen von der Sortierung auf Serverebene geerbt wurden und der Standardwert nicht geändert wurde.

 Ausgabe der T-SQL-Anweisungsausführung

Lassen Sie mich Ihnen nun zeigen, wie Sie die Datenbanksortierung mithilfe der GUI in SQL Server Management Studio überprüfen.

Stellen Sie zunächst mithilfe von SQL Server Management Studio eine Verbindung zu Ihrer SQL Server-Instanz her. Erweitern Sie den Instanzknoten, gefolgt vom Ordner Datenbanken. Klicken Sie mit der rechten Maustaste auf die Zieldatenbank und wählen Sie Eigenschaften:

 eigenschaften in der Zieldatenbank auswählen

Sie erhalten das folgende Fenster mit den Datenbankeigenschaften.

Klicken Sie nun im linken Bereich auf die Registerkarte Optionen. Sie erhalten mehrere Eigenschaftseinstellungen im rechten Bereich. Collation ist die erste Eigenschaft dieser Seite – Sie können sehen, dass sie dieselbe ist wie im obigen T-SQL-Skript.

Ebenso können Sie auf den SQL Server-Instanzknoten klicken und mit der rechten Maustaste auf die Eigenschaften auf Instanzebene klicken, um die Sortierung auf Serverebene anzuzeigen.

 sortierung auf Serverebene

Wenn Sie diese Sortierung in eine neue Sortierung ändern möchten, müssen Sie nur auf die Dropdown-Liste Sortierung klicken und die gewünschte Option auswählen. Stellen Sie sicher, dass Sie eine vollständige Sicherung Ihrer Datenbank durchgeführt haben, bevor Sie dies tun.

 ändern der Sortierung in eine neue

Ich habe eine ähnliche Sortierung mit Groß- und Kleinschreibung SQL_Latin1_General_CP1_CS_AS für diese Datenbank ausgewählt und auf OK geklickt, um sie anzuwenden. Beachten: Stellen Sie sicher, dass während dieses Vorgangs niemand mit der Zieldatenbank verbunden ist, andernfalls müssen Sie den Modus in den Einzelbenutzermodus wechseln und diese Konfiguration ändern.

 Datenbankeigenschaften

Sie können diese Datenbanksortierung auch mit der T-SQL-Anweisung ändern. Verwenden Sie dazu die COLLATE-Klausel der ALTER DATABASE-Anweisung.

Zuerst haben wir die Datenbank in den Einzelbenutzermodus versetzt, dann die Sortierung geändert und schließlich die Datenbank in den Mehrbenutzermodus verschoben.

--Change Database Collation using T-SQL USE master; GO Alter DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATEGOALTER DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS; GOAlter DATABASE SET MULTI_USER

Alle unterstützten Sortierungen in SQL Server auflisten

In diesem Abschnitt erfahren Sie, wie Sie alle verfügbaren Sortierungen in SQL Server finden. Lassen Sie mich zunächst zeigen, wie Sie die Liste aller unterstützten Sortierungen für die SQL Server-Instanz abrufen.

SQL Server verfügt über eine Systemfunktion namens fn_helpcollations(), mit der Sie alle Kollatierungen abrufen können.

Führen Sie den folgenden Befehl aus, um die Liste anzuzeigen.

--Display the list of all collations SELECT name, description FROM fn_helpcollations()

Wir können alle 5508 unterstützten Sortierungen im Ausgabeabschnitt sehen. Wenn Sie nicht sicher sind, welche Sortierung Sie auswählen sollen, können Sie die WHERE-Klausel im folgenden Skript verwenden, um alle möglichen Sortierungen herauszufiltern, die für die Datenbank festgelegt werden können.

 alle unterstützten Sortierungen

Angenommen, Sie müssen Ihre Daten in US-Englisch speichern und möchten, dass der SQL Server sie in einem Format mit Groß- und Kleinschreibung verarbeitet. Mit dem folgenden Befehl können Sie die Liste der möglichen und unterstützten Sortierungen für Ihre Abfrage abrufen:

--Display the list of all collations with WHERE clause SELECT Name, Description FROM fn_helpcollations() WHERE Name like 'SQL_Latin1%' AND Description LIKE '%case-sensitive%'

Die Ausgabe zeigt nur 10 Sortierungen an, die Ihre Abfrage erfüllen. Sie können das obige Skript verwenden, um verschiedene Sortierungen herauszufiltern.

 filtern der Sortierungen

Auswirkung der Änderung der Datenbanksortierung auf die Abfrageausgabe

In diesem Abschnitt zeige ich Ihnen den Unterschied zwischen den beiden Ausgaben derselben Abfrage, wenn sie mit unterschiedlichen Sortierungen ausgeführt werden.

Zuerst erstelle ich eine Datenbank namens MSSQL mit einer Sortierung (SQL_Latin1_General_CP1_CS_AS). Dann werde ich dieselbe Abfrage zweimal ausführen, um die Ausgabe zu erhalten. Später werde ich die Sortierung in SQL_Latin1_General_CP1_CI_AS ändern und dieselben Abfragen erneut ausführen, um ihre Ausgabe zu erhalten. Sie können beide Ausgaben vergleichen und die Auswirkungen der Änderung einer Datenbanksortierung nachvollziehen. Beginnen wir also mit der Datenbankerstellung.

Starten Sie das Fenster neue Datenbankerstellung wie in der Abbildung unten gezeigt. Sie können diese Datenbank auch mit T-SQL erstellen. Danach können Sie den Datenbanknamen und seine Datendateien sehen. Klicken Sie nun auf die zweite Registerkarte im linken Bereich, um zum Fenster Sortierreiheneigenschaft zu wechseln.

 starten eines neuen Fensters zur Datenbankerstellung

Sie können sehen, dass der Kollatierungsname für diese Datenbank der Standardwert ist. Dies bedeutet, dass diese Datenbank die Sortierung vom Sortierungstyp auf Serverebene erbt. Klicken Sie auf die Dropdown-Liste Sortierung, um Ihre neue Sortierung auszuwählen.

 neue Sortierung auswählen

Ich habe die folgende Sortierung SQL_Latin1_General_CP1_CS_AS für diese Datenbank ausgewählt – nicht die Standardsortierung. Klicken Sie auf OK, um mit der Datenbankerstellung fortzufahren.

 neue Sortierung auswählen

Überprüfen Sie nun die Datenbanksortierung für eine neu erstellte Datenbank. Wir können sehen, es ist SQL_Latin1_General_CP1_CS_AS wie wir im vorherigen Schritt ausgewählt haben.

 überprüfen der Datenbanksortierung für neu erstellte Datenbank

In SQL_Latin1_General_CP1_CS_AS steht CS für den case-Sensitive-Modus und CI für den case-Insensitive-Modus. Jetzt können Sie entweder den folgenden T-SQL-Code oder einen beliebigen Code ausführen, um die Ausgabe zu erhalten.

Ich habe denselben Befehl zweimal ausgeführt. Das erste Skript filtert die Spaltennamen mit einem Wert SYS in Großbuchstaben, während das zweite Skript dieselbe Spalte mit demselben Wert sys in Kleinbuchstaben filtert. Der Ausgabeabschnitt zeigt, dass das erste Skript keine Ausgabe angezeigt hat, während das zweite Skript die Ausgabe aufgrund seines Groß- / Kleinschreibung-sensitiven Verhaltens angezeigt hat.

Select * from sysusersWhere name='SYS'GoSelect * from sysusersWhere name='sys'GO
 Auswirkungen der Änderung der Datenbanksortierung auf die Abfrageausgabe

Jetzt ändern wir die Sortierung dieser Datenbank in die Sortierung SQL_Latin1_General_CP1_CI_AS ohne Berücksichtigung der Groß- und Kleinschreibung, indem wir die folgenden T-SQL-Anweisungen ausführen. Sie können es auch über die GUI ändern, indem Sie auf das Fenster Datenbankeigenschaften in SQL Server Management Studio zugreifen.

--Change database collation to SQL_Latin1_General_CP1_CI_ASUSE master; GO Alter DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATEGOALTER DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS; GOAlter DATABASE SET MULTI_USER

Ich habe das obige Skript auf einmal ausgeführt und die Datenbanksortierung wurde erfolgreich in eine neue Sortierung geändert, die die Groß- und Kleinschreibung nicht berücksichtigt.

 neue Sortierung mit Unterstützung für Groß- und Kleinschreibung

Sie können diese Änderung überprüfen, indem Sie die folgenden Skripte ausführen, um die Sortierung der neu erstellten Datenbank MSSQL zu überprüfen. Wir können sehen, dass die neue Sortierung für diese Datenbank im folgenden Bild festgelegt ist.

 neue Sortierung wird für die Datenbank festgelegt

Wir werden erneut dieselbe T-SQL-Anweisung ausführen, bevor wir die Sortierung ändern, um die Auswirkungen dieser Änderung zu sehen. Wie wir jetzt sehen können, befinden sich beide T-SQL-Anweisungen in der Ausgabe.

 Auswirkungen der Änderung der Datenbanksortierung auf die Abfrageausgabe

Fazit

Ich hoffe, es ist offensichtlich, dass die Sortierung in SQL Server entscheidend ist. Wir haben definiert, welche Auswirkungen es hat, wenn Sie Änderungen an der Sortierung auf einer beliebigen Ebene in SQL Server vornehmen. Führen Sie immer eine ordnungsgemäße Planung durch und testen Sie die Änderungen zuerst in Ihrer Umgebung mit niedrigerem Lebenszyklus.

Bleiben Sie dran für meinen nächsten Artikel, in dem ich Ihnen eine Schritt-für-Schritt-Methode zum Ändern der Sortierung auf Serverebene zeige.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.