Menerapkan rakitan
Berlaku untuk: SQL Server
Artikel ini menyediakan informasi tentang area berikut untuk membantu Anda menerapkan dan bekerja dengan rakitan dalam database:
- Membuat rakitan
- Memodifikasi rakitan
- Menjatuhkan, menonaktifkan, dan mengaktifkan rakitan
- Mengelola versi rakitan
Membuat assembly
Rakitan dibuat di SQL Server dengan menggunakan pernyataan Transact-SQL CREATE ASSEMBLY
, atau di SQL Server Management Studio dengan menggunakan Editor Bantuan Rakitan. Selain itu, menyebarkan Proyek SQL Server di Microsoft Visual Studio mendaftarkan rakitan dalam database yang ditentukan untuk proyek. Untuk informasi selengkapnya, lihat Menyebarkan Objek Database CLR.
- Dengan Transact-SQL: CREATE ASSEMBLY (Transact-SQL)
- Dengan SQL Server Management Studio: Rakitan - Properti
Mengubah rakitan
Rakitan dimodifikasi di SQL Server dengan menggunakan pernyataan Transact-SQL ALTER ASSEMBLY
atau di SQL Server Management Studio dengan menggunakan Editor Bantuan Rakitan.
- Dengan Transact-SQL: ALTER ASSEMBLY (Transact-SQL)
- Dengan SQL Server Management Studio: Rakitan - Properti
Anda dapat mengubah assembly saat ingin melakukan tindakan berikut:
Ubah implementasi assembly dengan mengunggah versi biner assembly yang lebih baru. Untuk informasi selengkapnya, lihat Mengelola versi rakitan nanti di artikel ini.
Ubah kumpulan izin rakitan. Untuk informasi selengkapnya, lihat Mendesain rakitan.
Ubah visibilitas rakitan. Rakitan yang terlihat tersedia untuk dirujuk di SQL Server. Rakitan yang tidak terlihat tidak tersedia, bahkan jika diunggah dalam database. Secara default, rakitan yang diunggah ke instans SQL Server terlihat.
Menambahkan atau menghilangkan debug atau file sumber yang terkait dengan rakitan.
Menghilangkan, menonaktifkan, dan mengaktifkan rakitan
Rakitan dihilangkan dengan menggunakan pernyataan Transact-SQL DROP ASSEMBLY
atau SQL Server Management Studio.
- Dengan Transact-SQL: DROP ASSEMBLY (Transact-SQL)
- Dengan SQL Server Management Studio: Hapus Objek
Secara default, semua rakitan yang dibuat di SQL Server dinonaktifkan dari eksekusi. Anda dapat menggunakan clr enabled
opsi prosedur tersimpan sp_configure
sistem, untuk menonaktifkan atau mengaktifkan eksekusi semua rakitan yang diunggah di SQL Server. Menonaktifkan eksekusi rakitan mencegah fungsi runtime bahasa umum (CLR), prosedur tersimpan, pemicu, agregat, dan jenis yang ditentukan pengguna untuk dieksekusi, dan menghentikan apa pun yang saat ini dijalankan. Menonaktifkan eksekusi rakitan tidak menonaktifkan kemampuan untuk membuat, mengubah, atau menghilangkan rakitan. Untuk informasi selengkapnya, lihat Konfigurasi server: clr diaktifkan.
Untuk informasi selengkapnya, lihat sp_configure.
Mengelola versi rakitan
Ketika rakitan diunggah ke instans SQL Server, perakitan disimpan dan dikelola dalam katalog sistem database. Setiap perubahan yang dilakukan pada definisi rakitan di Microsoft .NET Framework harus disebarluaskan ke rakitan yang disimpan dalam katalog database.
Ketika Anda harus memodifikasi assembly, Anda harus mengeluarkan ALTER ASSEMBLY
pernyataan untuk memperbarui assembly dalam database. Pernyataan ini memperbarui perakitan ke salinan terbaru modul .NET Framework yang memegang implementasinya.
Klausul WITH UNCHECKED DATA
ALTER ASSEMBLY
pernyataan menginstruksikan SQL Server untuk me-refresh bahkan rakitan yang data yang bertahan dalam database bergantung. Secara khusus, Anda harus menentukan WITH UNCHECKED DATA
apakah salah satu hal berikut ini ada:
Kolom komputasi yang dipertahankan yang mereferensikan metode dalam perakitan, baik secara langsung, atau tidak langsung, melalui fungsi atau metode Transact-SQL.
Kolom jenis yang ditentukan pengguna CLR yang bergantung pada rakitan, dan jenisnya mengimplementasikan
UserDefined
format serialisasi (non-Native
).
Perhatian
Jika WITH UNCHECKED DATA
tidak ditentukan, SQL Server mencoba mencegah ALTER ASSEMBLY
eksekusi jika versi rakitan baru memengaruhi data yang ada dalam tabel, indeks, atau situs persisten lainnya. Namun, SQL Server tidak menjamin bahwa kolom komputasi, indeks, tampilan terindeks, atau ekspresi akan konsisten dengan rutinitas dan jenis yang mendasar ketika rakitan CLR diperbarui. Berhati-hatilah saat Anda menjalankan ALTER ASSEMBLY
untuk memastikan bahwa tidak ada ketidakcocokan antara hasil ekspresi dan nilai yang didasarkan pada ekspresi yang disimpan di rakitan.
Hanya anggota peran database tetap db_owner dan db_ddlowner yang dapat dijalankan ALTER ASSEMBLY
dengan menggunakan WITH UNCHECKED DATA
klausa .
SQL Server memposting pesan ke log peristiwa Aplikasi Windows bahwa rakitan dimodifikasi dengan data yang tidak dicentang dalam tabel. SQL Server kemudian menandai tabel apa pun yang berisi data tergantung pada perakitan karena memiliki data yang tidak dicentang. Kolom has_unchecked_assembly_data
sys.tables
tampilan katalog berisi nilai 1
untuk tabel yang berisi data yang tidak dicentang, dan 0
untuk tabel tanpa data yang tidak dicentang.
Untuk mengatasi integritas data yang tidak dicentang, jalankan DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS
terhadap setiap tabel yang memiliki data yang tidak dicentang. Jika DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS
gagal, Anda harus menghapus baris tabel yang tidak valid atau mengubah kode rakitan untuk mengatasi masalah, lalu mengeluarkan lebih ALTER ASSEMBLY
banyak pernyataan.
ALTER ASSEMBLY
mengubah versi rakitan. Budaya dan token kunci publik assembly tetap sama. SQL Server tidak mengizinkan pendaftaran versi rakitan yang berbeda dengan nama, budaya, dan kunci publik yang sama.
Interaksi dengan kebijakan di seluruh komputer untuk pengikatan versi
Jika referensi ke rakitan yang disimpan di SQL Server dialihkan ke versi tertentu dengan menggunakan kebijakan penerbit atau kebijakan administrator di seluruh komputer, Anda harus melakukan salah satu tindakan berikut:
Pastikan versi baru tempat pengalihan ini dibuat berada dalam database.
Ubah pernyataan apa pun ke file kebijakan eksternal komputer atau kebijakan penerbit untuk memastikan bahwa pernyataan tersebut mereferensikan versi tertentu yang ada di database.
Jika tidak, upaya untuk memuat versi rakitan baru ke instans SQL Server gagal.
Untuk informasi selengkapnya, lihat MENGUBAH ASSEMBLY.