Bagaimana saya bisa mengubah SQL Server 2008 R2 Express Default Collation untuk seluruh server dan database tertentu?
Apakah ada cara untuk melakukannya dengan menggunakan antarmuka visual dari SQL Server Management Studio? Di jendela Properti Server (dan di jendela Properti Database yang sesuai), properti ini tidak tersedia untuk diedit.
Jawaban:
Iya nih.
Anda bisa mengubah susunan default contoh SQL Server 2008 R2 express dan database individual, tetapi ini adalah tugas yang kompleks.
Sayangnya, tidak ada opsi visual untuk melakukannya melalui SSMS.
Pengaturan dan Mengubah Collation Server - SQL Server 2008
Pastikan Anda memiliki semua informasi atau skrip yang diperlukan untuk membuat kembali basis data pengguna Anda dan semua objek di dalamnya.
Ekspor semua data Anda menggunakan alat seperti bcp Utility. Untuk informasi lebih lanjut, lihat Mengimpor dan Mengekspor Data Massal.
Jatuhkan semua basis data pengguna.
Bangun kembali database master yang menetapkan collation baru di properti SQLCOLLATION dari perintah setup
Buat semua database dan semua objek di dalamnya.
Impor semua data Anda.
Mengatur dan Mengubah Database Collation - SQL Server 2008
COLLATION
opsi dalamCREATE DATABASE
pernyataan saat membuat database baru.Demikian pula, atur
COLLATION
opsi dalamALTER DATABASE
pernyataan untuk mengubah susunan basis data yang ada.ALTER DATABASE [database_name] COLLATE SQL_Latin1_General_CP1_CI_AS;
Mengatur dan Mengubah Kolom Kolasi
sumber
Pastikan Anda benar-benar ingin "menjatuhkan" basis data pengguna seperti disebutkan dalam jawaban di atas. Anda mungkin hanya ingin "melepaskan" basis data. Atau sungguh, Anda tidak dapat melakukan apa pun karena membangun kembali master secara efektif menghapus tautan apa pun ke basis data pengguna. Ada kalanya database dibuat dalam susunan yang diinginkan tetapi server tidak. Anda tidak ingin harus memulihkan semua database pengguna Anda dari cadangan dalam kasus ini.
sumber
Saya melakukan sesuatu seperti ini dan itu berhasil tetapi Anda harus mengingat indeks yang menunjuk ke tipe data sebagai teks / varchar / nvarchar harus dihapus, jalankan skrip dan kemudian buat indeks.
ini jawaban pertamaku diposting maafkan kekacauan saya
sumber
Mengekspor semua data (termasuk login, server yang ditautkan, pekerjaan SQL Agent, pengaturan DB Mail, dll), dan membangun kembali data tingkat instance, ditambah memuat kembali semua data pengguna, adalah banyak pekerjaan. Dan, bahkan setelah semua itu, masih belum ada jaminan bahwa Anda dapat memperbarui collation default database via
ALTER DATABASE
susunan karena ada beberapa kondisi yang akan mencegah operasi dari menyelesaikan (lihat bagian "Mengubah Susunan Basis Data" dariALTER DATABASE
dokumentasi untuk perincian) .Namun, ada metode tidak berdokumen yaitu jauh lebih mudah. Kelemahan utama adalah bahwa itu tidak didukung. Ini bukan untuk mengatakan bahwa ada sesuatu yang salah, hanya saja jika sesuatu terjadi, Microsoft tidak akan membantu memperbaikinya (karena mereka tidak pernah menjamin bahwa itu akan berhasil).
Metode yang saya bicarakan berjalan
sqlservr.exe
dengan-q {new_collation_name}
sakelar. Ada sedikit lebih dari itu, tetapi itu adalah ide dasar. Metode ini hanya memperbarui meta-data sistem, yang memiliki manfaat dan konsekuensi, yang utama adalah:MANFAAT
ALTER DATABASE
bekerjaDRAWBACKS
VARCHAR
data dapat berubah, JIKA halaman kode berbeda antara susunan lama dan baru, dan karakter dengan nilai 128 - 255 (0x80 - 0xFF) ada, dan karakter tersebut tidak ada sebagai karakter yang sama dengan nilai yang sama pada kode baru halaman. Jadi ada potensi untuk kehilangan data, dan data Anda perlu diteliti terlebih dahulu untuk memastikan bahwa kondisi ini tidak ada. Tetapi, ini juga berarti bahwa ada banyak kasus dengan kasus saja karakter yang memiliki nilai 0 - 127 yang tidak dalam bahaya, bahkan jika halaman kode berubah.Untuk uraian terperinci tentang apa yang
sqlservr.exe -q
dilakukan dan tidak dilakukan metode (termasuk perincian tentang cara kerja pemeriksaan di berbagai tingkat, dan masalah potensial yang harus diwaspadai), silakan lihat posting saya:Mengubah Susunan Instans, Basis Data, dan Semua Kolom di Semua Basis Data Pengguna: Apa yang Mungkin Salah?
Untuk mengubah hanya contoh (termasuk sistem database:
master
,model
,msdb
, dantempdb
) dan satu atau lebih database (tapi tidak semua database), hanya melepaskan database (s) yang ingin Anda kecualikan dari operasi ini, dan kemudian pasang kembali mereka setelah pembaruan pemeriksaan selesai.sumber