Bagikan melalui


Cara: Bekerja dengan Objek Database CLR

Selain bahasa pemrograman Transact-SQL, Anda dapat menggunakan bahasa .NET Framework untuk membuat objek database yang mengambil dan memperbarui data. Objek database yang ditulis dalam kode terkelola disebut objek database SQL Server Common Language Run (CLR). Untuk penjelasan tentang keuntungan menggunakan objek database CLR yang dihosting di SQL Server, serta cara memilih antara Transact-SQL dan CLR, lihat Keuntungan Integrasi CLR dan Keuntungan Menggunakan Kode Terkelola untuk Membuat Objek Database.

Untuk membuat objek database CLR menggunakan SQL Server Data Tools, Anda membuat proyek database lalu menambahkan objek database CLR ke objek tersebut. Tidak seperti versi Visual Studio sebelumnya, Anda tidak perlu membuat proyek CLR terpisah lalu menambahkan referensi ke dalamnya dari proyek database. Saat Anda membuat dan menerbitkan proyek database, Anda secara otomatis menerbitkan objek CLR dalam proyek secara bersamaan. Setelah Anda menerbitkan objek CLR ini, objek tersebut dapat dipanggil dan dijalankan seperti objek database lainnya.

Halaman properti CLR dan CLR Build berisi banyak pengaturan untuk menggunakan objek database CLR dalam proyek Anda. Secara khusus, halaman properti CLR memiliki pengaturan tingkat izin untuk mengatur izin pada rakitan CLR. Ini juga memiliki pengaturan "Hasilkan DDL" untuk mengontrol apakah DDL untuk objek database CLR yang ditambahkan ke proyek dihasilkan. Halaman properti CLR Build berisi semua opsi pengkompilasi yang dapat Anda atur untuk mengonfigurasi kompilasi kode CLR dalam proyek. Halaman properti ini dapat diakses dengan mengklik kanan proyek Anda di Penjelajah Solusi dan memilih Properti.

Untuk mengaktifkan penelusuran kesalahan objek database CLR, buka SQL Server Object Explorer. Klik kanan server yang berisi artefak database CLR yang ingin Anda debug, dan pilih Izinkan Penelusuran Kesalahan SQL/CLR. Kotak pesan muncul dengan peringatan: "Perhatikan bahwa selama penelusuran kesalahan, semua utas terkelola di server ini akan berhenti. Apakah Anda ingin mengaktifkan penelusuran kesalahan SQL CLR di server ini?". Saat Anda menelusuri kesalahan objek database CLR, eksekusi melanggar akan merusak semua utas di server, yang memengaruhi pengguna lain. Untuk alasan ini, Anda tidak boleh men-debug aplikasi untuk objek database CLR di server produksi. Anda juga harus mencatat bahwa setelah Anda mulai men-debug, sudah terlambat untuk mengubah pengaturan di SQL Server Object Explorer. Perubahan yang dilakukan di SQL Server Object Explorer tidak akan berlaku hingga awal sesi penelusuran kesalahan berikutnya.

Untuk informasi selengkapnya tentang persyaratan membangun objek database CLR, lihat Membangun Objek Database dengan Integrasi Common Language Runtime (CLR).

Peringatan

Prosedur berikut menggunakan entitas yang dibuat dalam prosedur sebelumnya di bagian Pengembangan Database Offline Berorientasi Proyek.

Untuk menambahkan objek database CLR ke proyek Anda

  1. Klik kanan proyek database TradeDev di Penjelajah Solusi, pilih Tambahkan, lalu Item Baru.

  2. Pilih templat C# SQL CLR, lalu Fungsi yang Ditentukan Pengguna SQL CLR. Terima nama default dan pilih Tambahkan.

  3. Tambahkan kode berikut ke isi kelas. Fungsi ini memvalidasi nomor telepon AS. Ini harus terdiri dari 3 karakter numerik, secara opsional diapit dalam tanda kurung, diikuti oleh satu set 3 karakter numerik dan kemudian satu set 4 karakter numerik. Contoh format yang didukung adalah (425) 555-0123, 425-555-0123, 425 555 0123 dan 1-425-555-0123.

    
    [SqlFunction(IsDeterministic = true, IsPrecise = true)]  
    public static SqlBoolean validatePhone(SqlString phone)  
    {  
        string aNorthAmericanPhoneNumberPattern = @"^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$";  
        if (!phone.IsNull)  
        {  
           Regex regex = new Regex(aNorthAmericanPhoneNumberPattern);  
           return regex.IsMatch(phone.Value);  
        }  
        return true;  
     }  
    
  4. Perhatikan bahwa Regex digaris bawahi dengan warna merah. Regex Klik kanan dan pilih Atasi, lalu gunakan System.Text.RegularExpressions.

  5. Jika Anda mengembangkan terhadap instans server Microsoft SQL Server 2012, Anda dapat melewati langkah ini. Jika tidak, SQL Server 2005 dan SQL Server 2008 hanya mendukung proyek database yang dibangun dengan versi 2.0, 3.0, atau 3.5 dari .NET Framework. Untuk memastikan bahwa platform target .NET diatur dengan benar, klik kanan proyek database TradeDev di Penjelajah Solusi, pilih Properti. Di halaman properti SQLCLR , ubah platform Target menjadi .NET Framework 3.5 atau di bawahnya. Pilih Ya di layar akhir untuk menutup dan membuka kembali proyek.

  6. Klik kanan proyek TradeDev dan pilih Bangun untuk membangun proyek.

  7. Klik dua kali Suppliers.sql dan pilih Tampilkan Perancang untuk membuka tabel Pemasok di Desainer Tabel.

  8. Pilih baris kosong di Kisi Kolom untuk menambahkan kolom baru ke tabel. Masukkan telepon untuk bidang Nama , nvarchar (128) untuk Tipe Data dan biarkan bidang Izinkan Nulls dicentang.

  9. Klik kanan simpul Periksa Batasan di Panel Konteks dan pilih Tambahkan Batasan Pemeriksaan Baru.

  10. Ganti definisi default batasan di Panel Skrip dengan yang berikut ini.

    CONSTRAINT [CK_Suppliers_CheckPhone] CHECK (dbo.validatePhone(phone)=1),  
    

    Ini akan memastikan bahwa setiap input ke bidang telepon baru akan diperiksa menggunakan CLR UDF yang kami tambahkan sebelumnya.

  11. Tekan F5 untuk membangun dan menyebarkan proyek ke database lokal.

Untuk menggunakan objek database CLR

  1. Di SQL Server Object Explorer, navigasikan ke database lokal tempat Anda menyebarkan proyek Anda.

  2. Secara default, integrasi CLR dinonaktifkan di SQL Server. Untuk menggunakan objek database CLR, Anda harus mengaktifkan integrasi CLR. Untuk melakukan ini, gunakan opsi "clr enabled" dari prosedur tersimpan sp_configure. Untuk informasi selengkapnya, lihat artikel Opsi yang diaktifkan clr.

    Klik kanan database dan pilih Kueri Baru. Di panel kueri, tempelkan kode berikut dan tekan tombol Jalankan Kueri .

    
    sp_configure 'clr enabled', 1;  
    GO  
    RECONFIGURE;  
    GO  
    
  3. Klik kanan tabel Pemasok dan pilih Tampilkan Data.

  4. Masukkan 5 untuk id, Contoso untuk nama, biarkan bidang Alamat kosong, dan 425 3122 1222 untuk telepon. Jauhi bidang telepon , dan perhatikan bahwa pesan muncul, menunjukkan bahwa INSERT pernyataan bertentangan dengan batasan pemeriksaan yang ada, yang memeriksa input bidang telepon menggunakan pola telepon yang telah ditentukan sebelumnya.

  5. Ubah input Anda menjadi 425 312 1222 dan tab. Perhatikan bahwa input diterima kali ini.

Lihat Juga

Keuntungan integrasi CLR
Keuntungan Menggunakan Kode Terkelola untuk Membuat Objek Database
Membangun Objek Database dengan Integrasi Common Language Runtime (CLR)