Ange eller ändra databassortering
gäller för:SQL Server
Azure SQL Managed Instance
I den här artikeln beskrivs hur du ställer in eller ändrar databasen sortering med hjälp av SQL Server Management Studio (SSMS) eller Transact-SQL.
Om ingen databassortering har angetts används serversortering.
Rekommendationer
Du hittar de sorteringsnamn som stöds i Windows-sorteringsnamn och SQL Server-sorteringsnamn; eller så kan du använda sys.fn_helpcollations-systemfunktionen.
När du ändrar databassorteringen ändrar du:
Alla tecken, varchar, text, nchar, nvarchareller ntext kolumner i systemtabeller ändras till den nya sorteringen.
Alla befintliga char, varchar, text, nchar, nvarchareller ntext parametrar och skalärt returvärde för lagrade procedurer och användardefinierade funktioner konverteras till den nya sorteringsordningen.
Den teckentypen, varchar, text, nchar, nvarchareller ntext systemdatatyper och alla användardefinierade datatyper baserat på dessa systemdatatyper ändras till den nya standardsorteringen.
Du kan ändra sortering av alla nya objekt som skapas i en användardatabas med hjälp av COLLATE
-satsen i instruktionen ALTER DATABASE. Den här instruktionen ändrar inte sorteringen av kolumnerna i några befintliga användardefinierade tabeller. Dessa kan ändras med hjälp av COLLATE
-satsen i ALTER TABLE.
Behörigheter
Om du vill skapa en ny databas behöver du behörigheten CREATE DATABASE
i master
-databasen, CREATE ANY DATABASE
eller ALTER ANY DATABASE
behörighet.
Om du vill ändra sortering av en befintlig databas behöver du ALTER
behörighet för databasen.
Ange eller ändra databassortering
Du kan ange eller ändra databassortering med SQL Server Management Studio (SSMS) eller Transact-SQL (T-SQL).
Du kan ange sortering för en ny databas eller uppdatera sortering för en befintlig databas med hjälp av SQL Server Management Studio (SSMS).
I SQL Server Management Studio öppnar du Object Explorer, ansluter till en instans av SQL Server Database Engine, expanderar den instansen och expanderar sedan Databaser:
- För en ny databas: Högerklicka på Databaser och välj sedan Ny databas. Om du inte vill ha standardsortering väljer du sidan Alternativ och väljer en sortering i listrutan Sortering.
- För en befintlig databas: Högerklicka på den databas som du vill använda och välj Egenskaper. Välj sidan Alternativ och välj en sortering från listrutan Sortering.
Data efter ändring av sortering
Viktig
Om du ändrar sortering av en databas eller enskilda kolumner ändras inte underliggande data som redan lagras i befintliga tabeller. Såvida inte ditt program uttryckligen hanterar datakonvertering och jämförelse mellan olika sorteringar rekommenderar vi att du övergår befintliga data i databasen till den nya sorteringen. Detta tar bort risken för att program felaktigt ändrar data, vilket resulterar i felaktiga resultat eller tyst dataförlust.
När en databassortering ändras ärver endast nya tabeller den nya databassorteringen som standard. Det finns flera alternativ för att konvertera befintliga data till den nya sorteringen:
Konvertera data på plats. Information om hur du konverterar sortering för en kolumn i en befintlig tabell finns i Ange eller Ändra kolumnsortering. Den här åtgärden är enkel att implementera, men kan bli ett blockerande problem för stora tabeller och upptagna program. Se följande exempel för en direkt konvertering av kolumnen
MyString
till en ny sorteringsordning.ALTER TABLE dbo.MyTable ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
Kopiera data till nya tabeller som använder den nya sorteringen och ersätt ursprungliga tabeller i samma databas. Skapa en ny tabell i den aktuella databasen som ärver databassortering, kopiera data mellan den gamla tabellen och den nya tabellen, släpp den ursprungliga tabellen och byt namn på den nya tabellen till namnet på den ursprungliga tabellen. Det här är en snabbare åtgärd än en konvertering på plats, men kan bli en utmaning när du hanterar komplexa scheman med beroenden som begränsningar för sekundärnyckel, begränsningar för primärnyckel och utlösare. Det skulle också kräva en slutlig datasynkronisering mellan den ursprungliga och den nya tabellen före den slutliga gränsen, om data fortsätter att ändras av program. I följande exempel finns en "kopiera och ersätt"-konvertering av kolumnen
MyString
till en ny sortering: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';
Kopiera data till en ny databas som använder den nya sorteringen och ersätt den ursprungliga databasen. Skapa en ny databas med hjälp av den nya sorteringen och överför data från den ursprungliga databasen via verktyg som Integration Services eller guiden Importera/exportera i SQL Server Management Studio. Det här är en enklare metod för komplexa scheman. Det skulle också kräva en slutlig datasynkronisering mellan de ursprungliga och de nya databaserna före den slutliga avskärningen, om data fortsätter att ändras av program.
Begränsningar
Windows Unicode-sorteringar kan endast användas med COLLATE-satsen för att tillämpa sorteringar på nchar, nvarcharoch ntext datatyper på kolumnnivå och uttrycksnivå. De kan inte användas med COLLATE-satsen för att ändra sortering av en databas eller serverinstans.
Om den angivna sortering eller sortering som används av det refererade objektet använder en kodsida som inte stöds av Windows, visar databasmotorn ett fel.
Sortering på servernivå i Azure SQL Managed Instance kan anges när instansen skapas och kan inte ändras senare. Läs mer i Konfigurera eller ändra serverns sortering.
Viktig
Instruktionen ALTER DATABASE COLLATE
stöds inte i Azure SQL Database. Ange databassortering och katalogsortering vid tidpunkten för CREATE DATABASE.
Relaterat innehåll
- Stöd för sortering och Unicode
- sys.fn_helpcollations (Transact-SQL)
- sys.databases (Transact-SQL)
- SQL Server-sorteringsnamn (Transact-SQL)
- Windows-sorteringsnamn (Transact-SQL)
- COLLATE (Transact-SQL)
- Sorteringsprioritet
- CREATE TABLE (Transact-SQL)
- SKAPA DATABAS
- ALTER TABLE (Transact-SQL)
- ALTER DATABASE (Transact-SQL)