Nastavení nebo změna kolace databáze
platí pro:SQL Server
azure SQL Managed Instance
Tento článek popisuje, jak nastavit nebo změnit kolaci databáze pomocí aplikace SQL Server Management Studio (SSMS) nebo Jazyk Transact-SQL.
Pokud není zadána žádná kolace databáze, použije se kolace serveru .
Doporučení
Podporované názvy kolace najdete v název kolace systému Windows a název kolace SYSTÉMU SQL Server; nebo můžete použít funkci systému sys.fn_helpcollations.
Když změníte kolaci databáze, změníte:
Jakékoli znaky, varchar, text, nchar, nvarcharnebo ntext sloupce v systémových tabulkách se mění na novou kolaci.
Všechny existující char, varchar, text, nchar, nvarcharnebo ntext parametry a skalární návratové hodnoty pro uložené procedury a uživatelem definované funkce se změní na novou kolaci.
znak, varchar, text, nchar, nvarcharnebo ntext systémových datových typů a všechny uživatelem definované datové typy založené na těchto systémových datových typech se změní na novou výchozí kolaci.
Kolaci všech nových objektů vytvořených v uživatelské databázi můžete změnit pomocí klauzule COLLATE
příkazu ALTER DATABASE. Tento příkaz nemění kolaci sloupců v existujících uživatelsky definovaných tabulkách. Lze je změnit pomocí klauzule COLLATE
ALTER TABLE.
Dovolení
K vytvoření nové databáze potřebujete oprávnění CREATE DATABASE
v databázi master
nebo CREATE ANY DATABASE
nebo oprávnění ALTER ANY DATABASE
.
Ke změně kolace existující databáze potřebujete oprávnění ALTER
k databázi.
Nastavení nebo změna kolace databáze
Kolaci databáze můžete nastavit nebo změnit pomocí aplikace SQL Server Management Studio (SSMS) nebo Transact-SQL (T-SQL).
Kolaci můžete zadat pro novou databázi nebo aktualizovat kolaci stávající databáze pomocí aplikace SQL Server Management Studio (SSMS).
V aplikaci SQL Server Management Studio otevřete Průzkumník objektů, připojte se k instanci databázového stroje SQL Serveru, rozbalte tuto instanci a potom rozbalte Databáze:
- Pro novou databázi: Klikněte pravým tlačítkem na Databáze a vyberte Nová databáze. Pokud nechcete použít výchozí kolaci, vyberte stránku Možnosti a v rozevíracím seznamu Kolace vyberte požadovanou.
- Pro existující databázi: Klikněte pravým tlačítkem myši na požadovanou databázi a vyberte Vlastnosti. Vyberte stránku Možnosti a v rozevíracím seznamu Seřazení vyberte kolaci.
Data po změně kolace
Důležitý
Změna kolace databáze nebo jednotlivých sloupců neupravuje podkladová data, která jsou již uložená v existujících tabulkách. Pokud vaše aplikace explicitně nezpracuje převod dat a porovnání mezi různými kolacemi, doporučujeme převést stávající data v databázi na novou kolaci. Tím se odebere riziko, že aplikace můžou nesprávně upravovat data, což vede k možným nesprávným výsledkům nebo ztrátě tichých dat.
Při změně kolace databáze dědí ve výchozím nastavení novou kolaci databáze pouze nové tabulky. Existuje několik alternativ pro převod existujících dat na novou kolaci:
Převeďte data na místě. Chcete-li převést kolaci sloupce v existující tabulce, viz Nastavení nebo změna kolace sloupce. Tato operace se snadno implementuje, ale může se stát blokující problém u velkých tabulek a zaneprázdněných aplikací. V následujícím příkladu uvidíte, jak převést sloupec
MyString
přímo v místě na novou kolaci:ALTER TABLE dbo.MyTable ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
Zkopírujte data do nových tabulek, které používají novou kolaci, a nahraďte původní tabulky ve stejné databázi. V aktuální databázi vytvořte novou tabulku, která zdědí kolaci databáze, zkopírujte data ze staré tabulky do nové tabulky, odstraňte původní tabulku a přejmenujte novou tabulku na název původní tabulky. Jedná se o rychlejší operaci než místní převod, ale může se stát výzvou při zpracování složitých schémat se závislostmi, jako jsou omezení cizího klíče, omezení primárního klíče a triggery. Pokud aplikace nadále mění data, bude rovněž nutná konečná synchronizace dat mezi původní a novou tabulkou před konečným přerušením. Podívejte se na následující příklad pro převod typu „kopírování a nahrazení“ pro sloupec
MyString
na novou kolaci: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';
Zkopírujte data do nové databáze, která používá novou kolaci, a nahraďte původní databázi. Vytvořte novou databázi pomocí nové kolace a přeneste data z původní databáze pomocí nástrojů, jako jsou Integrační služby nebo Průvodce importem a exportem v aplikaci SQL Server Management Studio. Jedná se o jednodušší přístup pro složitá schémata. Bude také vyžadovat konečnou synchronizaci dat mezi původními a novými databázemi před konečným odříznutím, pokud se data budou dál měnit aplikacemi.
Omezení
Kolace Windows určené pouze pro Unicode lze použít s klauzulí COLLATE pro aplikaci na datové typy nchar, nvarchara ntext na úrovni sloupce a úrovni výrazu. Nelze je použít s klauzulí COLLATE ke změně kolace databáze nebo instance serveru.
Pokud zadaná kolace nebo kolace používaná odkazovaným objektem používá znakovou stránku, která není podporována systémem Windows, databázový stroj zobrazí chybu.
Kolace na úrovni serveru ve službě Azure SQL Managed Instance je možné zadat při vytvoření instance a později ji nelze změnit. Další informace najdete v Nastavte nebo změňte kolaci serveru.
Důležitý
Příkaz ALTER DATABASE COLLATE
není ve službě Azure SQL Database podporovaný. Určete kolaci databáze a kolaci katalogu v okamžiku CREATE DATABASE.
Související obsah
- podpora kolace a kódování Unicode
- sys.fn_helpcollations (Transact-SQL)
- sys.databases (Transact-SQL)
- název kolace SQL Serveru (Transact-SQL)
- název kolace Windows (Transact-SQL)
- COLLATE (Transact-SQL)
- Přednost zpracování
- CREATE TABLE (Transact-SQL)
- VYTVOŘIT DATABÁZI
- ALTER TABLE (Transact-SQL)
- ALTER DATABASE (Transact-SQL)