Udostępnij za pośrednictwem


Ustawianie lub zmienianie sortowania bazy danych

Dotyczy:programu SQL ServerAzure SQL Managed Instance

W tym artykule opisano sposób ustawiania lub zmieniania sortowania bazy danych przy użyciu programu SQL Server Management Studio (SSMS) lub języka Transact-SQL.

Jeśli nie określono sortowania bazy danych, używane jest sortowanie serwera .

Zalecenia

Obsługiwane nazwy sortowania można znaleźć w Windows Collation Name i SQL Server Collation Namelub można użyć systemowej funkcji sys.fn_helpcollations.

Po zmianie sortowania bazy danych zmienia się:

  • Każda kolumna char, varchar, text, nchar, nvarcharlub ntext w tabelach systemowych zostaje zmieniona na nowe sortowanie.

  • Wszystkie istniejące parametry typu char, varchar, text, nchar, nvarcharlub ntext oraz skalarne wartości zwracane w procedurach składowanych i funkcjach definiowanych przez użytkownika są zmieniane na nowe ustawienie sortowania.

  • char, varchar, tekst, nchar, nvarcharlub ntext typów danych systemowych oraz wszystkie typy danych zdefiniowane przez użytkownika, które są oparte na tych typach danych systemowych, są zmieniane na nowe domyślne sortowanie.

Sortowanie nowych obiektów utworzonych w bazie danych użytkownika można zmienić przy użyciu klauzuli COLLATE instrukcji ALTER DATABASE. Ta instrukcja nie zmienia sortowania kolumn w istniejących tabelach zdefiniowanych przez użytkownika. Można je zmienić, korzystając z klauzuli COLLATEALTER TABLE.

Uprawnienia

Aby utworzyć nową bazę danych, musisz mieć uprawnienie CREATE DATABASE w bazie danych master lub uprawnienia CREATE ANY DATABASElub ALTER ANY DATABASE.

Aby zmienić sortowanie istniejącej bazy danych, musisz mieć uprawnienie ALTER w bazie danych.

Ustawianie lub zmienianie sortowania bazy danych

Sortowanie bazy danych można ustawić lub zmienić przy użyciu programu SQL Server Management Studio (SSMS) lub Transact-SQL (T-SQL).

Sortowanie nowej bazy danych można określić lub zaktualizować sortowanie dla istniejącej bazy danych przy użyciu programu SQL Server Management Studio (SSMS).

W programie SQL Server Management Studio otwórz Eksplorator obiektów, połącz się z wystąpieniem silnika bazy danych SQL Server, rozwiń to wystąpienie, a następnie rozwiń Bazy danych:

  • W przypadku nowej bazy danych: kliknij prawym przyciskiem myszy Bazy danych, a następnie wybierz pozycję Nowa baza danych. Jeśli nie chcesz sortowania domyślnego, wybierz stronę Opcje i wybierz sortowanie z listy rozwijanej Sortowanie.
  • Dla istniejącej bazy danych: kliknij prawym przyciskiem myszy odpowiednią bazę danych i wybierz Właściwości. Wybierz stronę Opcje i wybierz sortowanie z listy rozwijanej Sortowanie.

Dane po zmianie porównywania

Ważny

Zmiana sortowania bazy danych lub poszczególnych kolumn nie modyfikuje danych bazowych przechowywanych już w istniejących tabelach. Jeśli aplikacja jawnie nie obsługuje konwersji danych i porównania między różnymi sortowaniami, zaleca się przeniesienie istniejących danych w bazie danych do nowego sortowania. Eliminuje to ryzyko, że aplikacje mogą niepoprawnie modyfikować dane, co skutkuje możliwymi nieprawidłowymi wynikami lub dyskretną utratą danych.

Po zmianie sortowania bazy danych tylko nowe tabele dziedziczą domyślnie nowe sortowanie bazy danych. Istnieje kilka alternatyw konwertowania istniejących danych na nowe sortowanie:

  • Skonwertuj dane w miejscu. Aby zmienić sortowanie dla kolumny w istniejącej tabeli, zobacz Ustawianie lub zmiana sortowania kolumn. Ta operacja jest łatwa do zaimplementowania, ale może stać się problemem blokującym dla dużych tabel i zajętych aplikacji. Zapoznaj się z poniższym przykładem konwersji w miejscu kolumny MyString na nowe sortowanie:

    ALTER TABLE dbo.MyTable
        ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
    
  • Skopiuj dane do nowych tabel korzystających z nowego sortowania i zastąp oryginalne tabele w tej samej bazie danych. Utwórz nową tabelę w bieżącej bazie danych, która będzie dziedziczyć sortowanie bazy danych, kopiować dane między starą tabelą a nową tabelą, usuwać oryginalną tabelę i zmieniać nazwę nowej tabeli na nazwę oryginalnej tabeli. Jest to szybsza operacja niż konwersja w miejscu, ale może stać się wyzwaniem podczas obsługi złożonych schematów z zależnościami, takimi jak ograniczenia klucza obcego, ograniczenia klucza podstawowego i wyzwalacze. Wymagałoby to również ostatecznej synchronizacji danych między oryginalną a nową tabelą przed ostatecznym odcięciem, jeśli dane będą nadal zmieniane przez aplikacje. Zobacz poniższy przykład konwersji "copy and replace" kolumny MyString na nową kolejność sortowania.

    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';
    
  • Skopiuj dane do nowej bazy danych korzystającej z nowego sortowania i zastąp oryginalną bazę danych. Utwórz nową bazę danych przy użyciu nowego sortowania i przetransferuj dane z oryginalnej bazy danych za pomocą narzędzi, takich jak usługi Integration Services lub Kreator importu/eksportu w programie SQL Server Management Studio. Jest to prostsze podejście do złożonych schematów. Wymagałoby to również ostatecznej synchronizacji danych między oryginałem a nowymi bazami danych przed ostatecznym odcięciem, jeśli dane będą nadal zmieniane przez aplikacje.

Ograniczenia

  • Sortowanie Unicode wyłącznie dla systemu Windows można stosować z klauzulą COLLATE do typów danych nchar, nvarchari ntext na poziomie kolumny oraz danych na poziomie wyrażenia. Nie można ich używać z klauzulą COLLATE w celu zmiany sortowania bazy danych lub instancji serwera.

  • Jeśli określone sortowanie lub sortowanie używane przez przywoływany obiekt używa strony kodowej, która nie jest obsługiwana przez system Windows, program obsługi bazy danych wyświetla błąd.

  • Sortowanie na poziomie serwera w usłudze Azure SQL Managed Instance można określić w momencie tworzenia wystąpienia. Później nie można tego zmienić. Dowiedz się więcej w Ustaw lub zmień sortowanie serwera.

Ważny

Instrukcja ALTER DATABASE COLLATE nie jest obsługiwana w usłudze Azure SQL Database. Określ sortowanie bazy danych i sortowanie katalogu w czasie CREATE DATABASE.