Bagikan melalui


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 kolatasi database yang ditentukan, kolatasi server akan digunakan.

Rekomendasi

Anda dapat menemukan nama kolase yang didukung di Nama Kolase Windows dan Nama Kolase SQL Server; atau Anda dapat menggunakan fungsi sistem sys.fn_helpcollations.

Saat Anda mengubah kolatasi database, Anda mengubah:

  • Kolom karakter, varchar, teks, nchar, nvarchar, atau ntext apa pun dalam tabel sistem diubah ke kolase 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 kolase baru.

  • Jenis data char, varchar, text, nchar, nvarchar, atau ntext system, dan semua jenis data yang ditentukan pengguna berdasarkan jenis data sistem ini, diubah ke kolase 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 kolaterasi kolom dalam tabel yang ditentukan pengguna yang ada. Ini dapat diubah dengan menggunakan COLLATE klausul ALTER TABLE.

Izin

Untuk membuat database baru, Anda memerlukan CREATE DATABASE izin dalam master database, atau CREATE ANY DATABASEizin , atau ALTER ANY DATABASE .

Untuk mengubah kolatasi database yang sudah ada, Anda memerlukan ALTER izin pada database.

Mengatur atau mengubah susunan database

Anda dapat mengatur atau mengubah kolase database menggunakan SQL Server Management Studio (SSMS), atau Transact-SQL (T-SQL).

Anda dapat menentukan kolase untuk database baru atau memperbarui kolase untuk database yang sudah ada dengan menggunakan SQL Server Management Studio (SSMS).

Di SQL Server Management Studio, buka Object Explorer, sambungkan ke instans Mesin Database SQL Server, perluas instans tersebut, lalu perluas Database:

  • Untuk database baru: Klik kanan Database lalu pilih Database Baru. Jika Anda tidak menginginkan kolamen default, pilih halaman Opsi , dan pilih kolamen dari daftar dropdown Kolabasi .
  • Untuk database yang sudah ada: Klik kanan database yang Anda inginkan dan pilih Properti. Pilih halaman Opsi , dan pilih kolamen dari daftar dropdown Kolabasi .

Data setelah mengubah kolagasi

Penting

Mengubah kolase database atau kolom individual tidak mengubah data dasar yang sudah disimpan dalam tabel yang 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 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 kolom di MyString 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 kolatasi baru, dan ganti tabel asli dalam database yang sama. Buat tabel baru dalam 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 "salin dan ganti" kolom ke MyString kolate 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 kolatasi baru, dan ganti database asli. Buat database baru menggunakan kolase baru, dan transfer data dari database asli melalui alat seperti Integration Services atau Wizard Impor/Ekspor di SQL Server Management Studio. Ini adalah pendekatan yang lebih sederhana untuk skema kompleks. Ini juga akan memerlukan sinkronisasi data akhir antara database asli dan baru sebelum pemotongan akhir, jika data terus diubah oleh aplikasi.

Batasan

  • Kolase khusus Windows Unicode hanya dapat digunakan dengan klausul 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 kolatasi yang ditentukan atau kolasasi yang digunakan oleh objek yang dirujuk menggunakan halaman kode yang tidak didukung oleh Windows, Mesin Database menampilkan kesalahan.

  • Kolase tingkat server di Azure SQL Managed Instance dapat ditentukan saat instans dibuat dan tidak dapat diubah nanti. Pelajari selengkapnya di Mengatur atau mengubah kolase server.

Penting

Pernyataan ALTER DATABASE COLLATE ini tidak didukung di Azure SQL Database. Tentukan kolatasi database dan kolatasi katalog pada saat CREATE DATABASE.