Bagikan melalui


Membuat fungsi CLR

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru

Anda dapat membuat objek database dalam instans SQL Server yang diprogram dalam assembly yang dibuat dalam lingkungan runtime bahasa umum .NET Framework (CLR). Objek database yang dapat menggunakan model pemrograman kaya yang disediakan oleh runtime bahasa umum meliputi fungsi agregat, fungsi, prosedur tersimpan, pemicu, dan jenis.

Membuat fungsi CLR di SQL Server melibatkan langkah-langkah berikut:

  • Tentukan fungsi sebagai metode statis kelas dalam bahasa yang didukung oleh .NET Framework. Untuk informasi selengkapnya tentang cara memprogram fungsi dalam Common Language Runtime, lihat fungsi CLR yang ditentukan pengguna. Kemudian, kompilasi kelas untuk membangun assembly di .NET Framework dengan menggunakan pengkompilasi bahasa yang sesuai.

  • Daftarkan rakitan di SQL Server dengan menggunakan pernyataan CREATE ASSEMBLY. Untuk informasi selengkapnya tentang rakitan di SQL Server, lihat Rakitan (Mesin Database).

  • Buat fungsi yang mereferensikan rakitan terdaftar dengan menggunakan pernyataan CREATE FUNCTION .

Menjalankan kode CLR nonaktif secara default di SQL Server. Anda dapat membuat, mengubah, dan menghilangkan objek database yang mereferensikan modul kode terkelola, tetapi referensi tersebut tidak dijalankan di SQL Server, kecuali opsi konfigurasi server clr diaktifkan dengan menggunakan sp_configure.

Menyebarkan Proyek SQL Server di Visual Studio mendaftarkan assembly ke dalam basis data yang ditentukan untuk proyek. Menyebarkan proyek juga membuat fungsi CLR dalam database untuk semua metode yang dianotasi dengan atribut SqlFunction. Untuk informasi selengkapnya, lihat Menyebarkan objek database CLR.

Mengakses sumber daya eksternal

Anda dapat menggunakan fungsi CLR untuk mengakses sumber daya eksternal seperti file, sumber daya jaringan, layanan web, dan database lainnya (termasuk instans jarak jauh SQL Server). Fungsi CLR dapat menggunakan berbagai kelas di .NET Framework, seperti System.IO, System.WebServices, System.Sql, dan sebagainya. Rakitan yang berisi fungsi tersebut setidaknya harus dikonfigurasi dengan izin EXTERNAL_ACCESS yang ditetapkan untuk tujuan ini. Untuk informasi selengkapnya, lihat CREATE ASSEMBLY.

Penyedia Terkelola Klien SQL dapat digunakan untuk mengakses instans jarak jauh SQL Server. Namun, koneksi loopback ke server asal tidak didukung dalam fungsi CLR.

Membuat, memodifikasi, atau menghilangkan rakitan di SQL Server

Membuat fungsi CLR

Mengakses kode asli

Fungsi CLR dapat mengakses kode asli (tidak dikelola), seperti kode yang ditulis dalam C atau C++, melalui penggunaan PInvoke dari kode terkelola (lihat Memanggil Fungsi Asli dari Kode Terkelola untuk detailnya). Anda dapat menggunakan kembali kode legasi sebagai UDF CLR, atau menulis UDF yang kritis terhadap performa dalam kode asli, dan ini memerlukan penggunaan rakitan UNSAFE. Lihat Keamanan Akses Kode integrasi CLR untuk berhati-hati tentang penggunaan rakitan UNSAFE.