Udostępnij za pośrednictwem


Ustawienie i zmiana sortowania kolumny

Można zastąpić sortowanie bazy danych dla char, varchar, text, nchar, nvarchar, i ntext danych, określając różne sortowanie dla okreolonej kolumna tabela, a przy użyciu jednego z następujących:

  • Klauzula COLLATE Tworzenie tabeli i ALTER TABLE.Na przykład:

    CREATE TABLE MyTable
      (PrimaryKey   int PRIMARY KEY,
       CharCol      varchar(10) COLLATE French_CI_AS NOT NULL
      )
    GO
    ALTER TABLE MyTable ALTER COLUMN CharCol
                varchar(10)COLLATE Latin1_General_CI_AS NOT NULL
    GO
    
  • SQL Server Management Studio.For more information, see Właściwości kolumny tabeli (SQL Server Management Studio).

  • Za pomocą Column.Collation właściwość w SQL Server Zarządzanie obiektami (SMO).

Nie można zmienić sortowanie kolumna, która odwołuje się jedną z następujących czynności:

  • Akolumna obliczana

  • Indeks

  • Statystyki dystrybucji, albo generowany automatycznie lub w instrukcja tworzenia statystyk

  • Ograniczenie typu CHECK

  • Ograniczenie klucza OBCEGO

Podczas pracy z tempdb, SORTUJ zawiera klauzulę database_default opcję, aby określić, że kolumna w tabela tymczasowa używa domyślnie sortowanie bieżącej baza danych użytkownika dla połączenia zamiast sortowanie tempdb.

Sortowanie i tekst kolumny

You can insert or update values in a text column whose collation is different from the code page of the default collation of the database.SQL Server implicitly converts the values to the collation of the column.

Sortowanie i tempdb

Tempdb baza danych zostanie zbudowana co czas SQL Server jest uruchomiona i ma ten sam sortowanie domyślne jako model bazy danych.Zazwyczaj jest taki sam jak porządek sortowanie domyślnego wystąpienie.Jeśli tworzenie bazy danych użytkownika i określić sortowanie domyślne innego niż model, baza danych użytkownika zawiera różne domyślnym sortowaniem niż tempdb.Wszystkie tymczasowe procedury przechowywane lub tabele tymczasowe utworzone i przechowywane w tempdb.Oznacza, że wszystkie pośrednie kolumny tabel tymczasowych i wszystkie coercible domyślne stałych, zmiennych i parametrów w tymczasowe procedury przechowywane ustawienia sortowania, które są inne niż porównywalne obiekty utworzone w tabelach stałe i procedur przechowywanych.

Może to prowadzić do problemów z niezgodność w sortowaniu między użytkownika bazy danych i obiektów bazy danych systemu.Na przykład wystąpienie SQL Server Latin1_General_CS_AS zastosowania sortowanie i wykonać następujące instrukcje:

CREATE DATABASE TestDB COLLATE Estonian_CS_AS;
USE TestDB;
CREATE TABLE TestPermTab (PrimaryKey int PRIMARY KEY, Col1 nchar );

W tym systemie tempdb bazy danych używa strona kodowa 1252, sortowanie Latin1_General_CS_AS i TestDB i TestPermTab.Col1 za pomocą Estonian_CS_AS sortowania ze strony kodowej 1257.Na przykład:

USE TestDB;
GO
-- Create a temporary table with the same column declarations
-- as TestPermTab
CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, Col1 nchar )
INSERT INTO #TestTempTab
         SELECT * FROM TestPermTab
GO

W poprzednim przykładzie tempdb baza danych używa sortowanie Latin1_General_CS_AS i TestDB i TestTab.Col1 za pomocą Estonian_CS_AS sortowanie.Na przykład:

SELECT * FROM TestPermTab a INNER JOIN #TestTempTab on a.Col1 = #TestTempTab.Col1

Ponieważ tempdb używa domyślnie sortowanie serwera i TestPermTab.Col1 używa różnych sortowanie programu SQL Server zwraca ten błąd: "Nie można rozwiązać konfliktu sortowanie między"latin1_general_ci_as_ks_ws" i "estonian_cs_as" w równym operacji."

Aby uniknąć błędu, można użyć następujących opcji:

  • Określić, że tabela tymczasowa kolumna Użyj sortowanie domyślne baza danych użytkownika nie tempdb.Umożliwia to tabela tymczasowa do pracy z podobnie sformatowane tabele w wielu baz danych, jeśli jest to wymagane w systemie.

    CREATE TABLE #TestTempTab
       (PrimaryKey int PRIMARY KEY,
        Col1 nchar COLLATE database_default
       )
    
  • Określ poprawny sortowanie dla #TestTempTab kolumna:

    CREATE TABLE #TestTempTab
       (PrimaryKey int PRIMARY KEY,
        Col1 nchar COLLATE Estonian_CS_AS
       )