Membuat fungsi CLR

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

Anda dapat membuat objek database di dalam instans SQL Server yang diprogram dalam rakitan yang dibuat dalam runtime bahasa umum (CLR) Microsoft .NET Framework. 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 runtime bahasa umum, lihat Fungsi yang Ditentukan Pengguna CLR. Kemudian, kompilasi kelas untuk membangun assembly di .NET Framework dengan menggunakan pengkompilasi bahasa yang sesuai.

  • Daftarkan assembly 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 ini tidak akan dijalankan di SQL Server kecuali Anda mengaktifkan opsi yang diaktifkan clr menggunakan sp_configure (Transact-SQL).

Menyebarkan Proyek SQL Server di Microsoft Visual Studio mendaftarkan rakitan dalam database 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

Fungsi CLR dapat digunakan untuk mengakses sumber daya eksternal seperti file, sumber daya jaringan, Layanan Web, database lain (termasuk instans jarak jauh SQL Server). Ini dapat dicapai dengan menggunakan berbagai kelas di .NET Framework, seperti , , System.WebServicesSystem.Sql, dan sebagainyaSystem.IO. Rakitan yang berisi fungsi tersebut setidaknya harus dikonfigurasi dengan izin EXTERNAL_ACCESS yang ditetapkan untuk tujuan ini. Untuk informasi selengkapnya, lihat MEMBUAT RAKITAN (Transact-SQL). Penyedia Terkelola Klien SQL dapat digunakan untuk mengakses instans jarak jauh SQL Server. Namun, koneksi loopback ke server asal tidak didukung dalam fungsi CLR.

Untuk membuat, mengubah, atau menghilangkan rakitan di SQL Server

Untuk 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). Ini dapat memungkinkan Anda menggunakan kembali kode warisan sebagai UDF CLR, atau menulis UDF kritis performa dalam kode asli, dan memerlukan penggunaan rakitan YANG TIDAK AMAN. Lihat Keamanan Akses Kode Integrasi CLR untuk perhatian tentang penggunaan rakitan YANG TIDAK AMAN.

Baca juga