Mengatur atau mengubah susunan database
Berlaku untuk: SQL Server Azure SQL Managed Instance
Artikel ini menjelaskan cara mengatur atau mengubah kolase database dengan menggunakan SQL Server Management Studio (SSMS) atau Transact-SQL. Jika tidak ada kolajeasi yang ditentukan, kolab server akan digunakan.
Pembatasan dan batasan
Kolase khusus Windows Unicode hanya dapat digunakan dengan klausa COLLATE untuk menerapkan kolase ke jenis data nchar, nvarchar, dan ntext pada tingkat kolom dan data tingkat ekspresi. Mereka tidak dapat digunakan dengan klausul COLLATE untuk mengubah kolase database atau instans server.
Jika kolase yang ditentukan atau kolase yang digunakan oleh objek yang dirujuk menggunakan halaman kode yang tidak didukung oleh Windows, Mesin Database menampilkan kesalahan.
Kolase tingkat server dalam Azure SQL Managed Instance dapat ditentukan ketika instans dibuat dan tidak dapat diubah nanti. Pelajari selengkapnya di Mengatur atau mengubah kolase server.
Penting
Pernyataan ALTER DATABASE COLLATE
ini tidak didukung pada Azure SQL Database. Tentukan kolatasi database dan kolabasi katalog pada saat CREATE DATABASE.
Rekomendasi
Anda dapat menemukan nama kolamen yang didukung di Nama Kolamen Windows (Transact-SQL) dan Nama Kolaksi SQL Server (Transact-SQL); atau Anda dapat menggunakan fungsi sistem sys.fn_helpcollations (Transact-SQL).
Saat Anda mengubah kolacek database, Anda mengubah:
Kolom karakter, varchar, teks, nchar, nvarchar, atau ntext apa pun dalam tabel sistem diubah ke kolabasi baru.
Semua parameter karakter, varchar, teks, nchar, nvarchar, atau ntext yang ada dan nilai pengembalian skalar untuk prosedur tersimpan dan fungsi yang ditentukan pengguna diubah ke kolajeasi baru.
Jenis data sistem char, varchar, text, nchar, nvarchar, atau ntext , dan semua jenis data yang ditentukan pengguna berdasarkan jenis data sistem ini, diubah ke kolatasi default baru.
Anda dapat mengubah kolase objek baru apa pun yang dibuat dalam database pengguna dengan menggunakan COLLATE
klausa pernyataan ALTER DATABASE . Pernyataan ini tidak mengubah kolabasi kolom dalam tabel yang ditentukan pengguna yang ada. Ini dapat diubah dengan menggunakan COLLATE
klausul ALTER TABLE.
Penting
Mengubah kolase database atau kolom individual tidak mengubah data dasar yang sudah disimpan dalam tabel yang sudah ada. Kecuali aplikasi Anda secara eksplisit menangani konversi data dan perbandingan antara kolase yang berbeda, disarankan agar Anda melakukan transisi data yang ada dalam database ke kolase baru. Ini menghapus risiko bahwa aplikasi mungkin salah memodifikasi data, mengakibatkan kemungkinan hasil yang salah atau kehilangan data senyap.
Saat kolase database diubah, hanya tabel baru yang akan mewarisi kolase database baru secara default. Ada beberapa alternatif untuk mengonversi data yang ada ke kolase baru:
Mengonversi data di tempat. Untuk mengonversi kolase untuk kolom dalam tabel yang sudah ada, lihat Mengatur atau Mengubah Kolase Kolom. Operasi ini mudah diterapkan, tetapi mungkin menjadi masalah pemblokiran untuk tabel besar dan aplikasi yang sibuk. Lihat contoh berikut untuk konversi
MyString
kolom di tempat ke kolate baru:ALTER TABLE dbo.MyTable ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
Salin data ke tabel baru yang menggunakan kolabasi baru, dan ganti tabel asli dalam database yang sama. Buat tabel baru di database saat ini yang akan mewarisi kolase database, menyalin data antara tabel lama dan tabel baru, menghilangkan tabel asli, dan mengganti nama tabel baru menjadi nama tabel asli. Ini adalah operasi yang lebih cepat daripada konversi di tempat, tetapi mungkin menjadi tantangan saat menangani skema kompleks dengan dependensi seperti batasan Kunci Asing, batasan Kunci Primer, dan Pemicu. Ini juga akan memerlukan sinkronisasi data akhir antara tabel asli dan baru sebelum pemotongan akhir, jika data terus diubah oleh aplikasi. Lihat contoh berikut untuk konversi
MyString
"salin dan ganti" kolom ke kolab baru: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';
Salin data ke database baru yang menggunakan kolabasi baru, dan ganti database asli. Buat database baru menggunakan kolajeasi baru, dan transfer data dari database asli melalui alat seperti Layanan Integrasi atau Wizard Impor/Ekspor di SQL Server Management Studio. Ini adalah pendekatan yang lebih sederhana untuk skema yang kompleks. Ini juga akan memerlukan sinkronisasi data akhir antara database asli dan baru sebelum pemotongan akhir, jika data terus diubah oleh aplikasi.
Izin
Untuk membuat database baru, memerlukan CREATE DATABASE
izin dalam master
database, atau memerlukan CREATE ANY DATABASE
izin , atau ALTER ANY DATABASE
.
Untuk mengubah susunan database yang sudah ada, memerlukan ALTER
izin pada database.
Mengatur atau mengubah kolase database menggunakan SQL Server Management Directory
Di Object Explorer, sambungkan ke instans mesin database SQL Server, perluas instans tersebut, lalu perluas Database.
Jika Anda membuat database baru, klik kanan Database lalu pilih Database Baru. Jika Anda tidak ingin kolamen default, pilih halaman Opsi , dan pilih kolajeasi dari daftar drop-down Kolabasi .
Atau, jika database sudah ada, klik kanan database yang Anda inginkan dan pilih Properti. Pilih halaman Opsi , dan pilih kolajeasi dari daftar drop-down Kolabasi .
Setelah selesai, pilih OK.
Mengatur kolase database menggunakan Transact-SQL
Sambungkan ke Mesin Database.
Dari bilah Standar, pilih Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan. Contoh ini memperlihatkan cara menggunakan klausa COLLATE di CREATE DATABASE untuk menentukan nama kolabasi. Contoh membuat database
MyOptionsTest
yang menggunakanLatin1_General_100_CS_AS_SC
kolabasi. Setelah Anda membuat database, jalankanSELECT
pernyataan untuk memverifikasi pengaturan.
USE master;
GO
IF DB_ID (N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest
COLLATE Latin1_General_100_CS_AS_SC;
GO
SELECT name, collation_name
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO
Mengubah kolater database menggunakan Transact-SQL
Sambungkan ke Mesin Database.
Dari bilah Standar, pilih Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan. Contoh ini memperlihatkan cara menggunakan klausa COLLATE dalam pernyataan ALTER DATABASE untuk mengubah nama kolase. Jalankan
SELECT
pernyataan untuk memverifikasi perubahan.
USE master;
GO
ALTER DATABASE MyOptionsTest
COLLATE French_CI_AS ;
GO
SELECT name, collation_name
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO
Langkah berikutnya
Pelajari selengkapnya tentang kolabasi:
- Kolajeasi dan Dukungan Unicode
- sys.fn_helpcollations (Transact-SQL)
- sys.databases (T-SQL)
- SQL Server Collation Name (Transact-SQL)
- Nama Kolatasi Windows (Transact-SQL)
- COLLATE (Transact-SQL)
- Prioritas Kolase (Transact-SQL)
- BUAT TABEL (Transact-SQL)
- CREATE DATABASE (SQL Server Transact-SQL)
- ALTER TABLE (Transact-SQL)
- MENGUBAH DATABASE (T-SQL)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk