Bagikan melalui


Integrasi runtime bahasa umum (CLR)

Berlaku untuk: SQL Server Azure SQL Managed Instance

SQL Server dan Azure SQL Managed Instance memungkinkan Anda menerapkan beberapa fungsi dengan bahasa .NET menggunakan integrasi runtime bahasa umum (CLR) asli sebagai modul sisi server SQL Server (prosedur, fungsi, dan pemicu). CLR menyediakan kode terkelola dengan layanan seperti integrasi lintas bahasa, keamanan akses kode, manajemen masa pakai objek, serta dukungan penelusuran kesalahan dan pembuatan profil.

Untuk pengguna SQL Server dan pengembang aplikasi, integrasi CLR berarti Anda dapat menulis prosedur tersimpan, pemicu, jenis yang ditentukan pengguna, fungsi yang ditentukan pengguna (bernilai skalar dan tabel), dan fungsi agregat yang ditentukan pengguna menggunakan bahasa .NET Framework apa pun, termasuk Visual Basic .NET dan Visual C#. SQL Server menyertakan .NET Framework versi 4 yang telah diinstal sebelumnya.

Video 6 menit ini menunjukkan kepada Anda cara menggunakan CLR di Azure SQL Managed Instance:

Keamanan akses kode tidak lagi didukung

Runtime bahasa umum menggunakan Keamanan Akses Kode (CAS) dalam .NET Framework, yang tidak lagi didukung sebagai batas keamanan. Rakitan CLR yang dibuat dengan PERMISSION_SET = SAFE mungkin dapat mengakses sumber daya sistem eksternal, memanggil kode yang tidak dikelola, dan memperoleh hak istimewa sysadmin. Di SQL Server 2017 (14.x) dan versi yang lebih baru, sp_configure opsi, keamanan ketat clr, meningkatkan keamanan rakitan CLR. clr strict security diaktifkan secara default, dan memperlakukan SAFE dan EXTERNAL_ACCESS rakitan seolah-olah ditandai UNSAFE. Opsi clr strict security dapat dinonaktifkan untuk kompatibilitas mundur, tetapi tidak disarankan.

Kami menyarankan agar Anda menandatangani semua rakitan dengan sertifikat atau kunci asimetris, dengan login terkait yang telah diberikan UNSAFE ASSEMBLY izin dalam master database. Administrator SQL Server juga dapat menambahkan rakitan ke daftar rakitan, yang harus dipercaya oleh Mesin Database. Untuk informasi selengkapnya, lihat sys.sp_add_trusted_assembly.

Kapan menggunakan modul CLR

Integrasi CLR memungkinkan Anda menerapkan fitur kompleks yang tersedia di .NET Framework seperti ekspresi reguler, kode untuk mengakses sumber daya eksternal (server, layanan web, database), enkripsi kustom, dll. Beberapa manfaat integrasi CLR sisi server adalah:

  • Model pemrograman yang lebih baik. Bahasa .NET Framework dalam banyak hal lebih kaya daripada Transact-SQL, menawarkan konstruksi dan kemampuan yang sebelumnya tidak tersedia untuk pengembang SQL Server. Pengembang juga dapat menggunakan kekuatan .NET Framework Library, yang menyediakan serangkaian kelas luas yang dapat digunakan untuk menyelesaikan masalah pemrograman dengan cepat dan efisien.

  • Peningkatan keselamatan dan keamanan. Kode terkelola berjalan di lingkungan run-time bahasa umum, yang dihosting oleh Mesin Database. SQL Server menggunakan ini untuk memberikan alternatif yang lebih aman dan lebih aman untuk prosedur tersimpan yang diperluas yang tersedia di versi SQL Server sebelumnya.

  • Kemampuan untuk menentukan jenis data dan fungsi agregat. Jenis yang ditentukan pengguna dan agregat yang ditentukan pengguna adalah dua objek database terkelola baru yang memperluas kemampuan penyimpanan dan kueri SQL Server.

  • Pengembangan yang disederhanakan melalui lingkungan standar. Pengembangan database diintegrasikan ke dalam rilis lingkungan pengembangan .NET Microsoft Visual Studio di masa mendatang. Pengembang menggunakan alat yang sama untuk mengembangkan dan men-debug objek database dan skrip seperti yang mereka gunakan untuk menulis komponen dan layanan .NET Framework tingkat menengah atau tingkat klien.

  • Potensi peningkatan performa dan skalabilitas. Dalam banyak situasi, kompilasi bahasa .NET Framework dan model eksekusi memberikan peningkatan performa melalui Transact-SQL.

Ekstensi Bahasa SQL Server menyediakan lingkungan eksekusi alternatif untuk runtime yang dekat dengan mesin database. Untuk diskusi tentang perbedaan antara ekstensi bahasa SQL CLR dan SQL, lihat Membandingkan Ekstensi Bahasa SQL Server dengan SQL CLR.

Tabel berikut mencantumkan artikel di bagian ini.

Artikel Deskripsi
Gambaran umum integrasi CLR Menjelaskan jenis objek yang dapat dibangun menggunakan integrasi CLR. Juga meninjau persyaratan untuk membangun objek database menggunakan integrasi CLR.
Integrasi CLR - Apa yang baru Menjelaskan fitur baru dalam rilis ini.
Arsitektur integrasi CLR - Lingkungan yang dihosting CLR Menjelaskan tujuan desain integrasi CLR.
Mengaktifkan integrasi CLR Menjelaskan cara mengaktifkan integrasi CLR.