Bagikan melalui


Gambaran Umum Atribut Kustom Integrasi CLR

Runtime bahasa umum (CLR) dari .NET Framework memungkinkan penggunaan kata kunci deskriptif, yang disebut atribut. Atribut ini memberikan informasi tambahan untuk banyak elemen, seperti metode dan kelas. Atribut disimpan di rakitan dengan metadata objek, dan dapat digunakan untuk menjelaskan kode Anda ke alat pengembangan lain atau untuk memengaruhi perilaku runtime di dalam SQL Server.

Ketika Anda mendaftarkan rutinitas CLR dengan SQL Server, SQL Server memperoleh serangkaian properti tentang rutinitas tersebut. Properti rutin ini menentukan kemampuan rutinitas, termasuk apakah rutinitas dapat diindeks. Misalnya, mengatur DataAccess properti untuk DataAccessKind.Read memungkinkan Anda mengakses data dari tabel pengguna SQL Server di dalam fungsi CLR. Contoh berikut menunjukkan kasus sederhana di mana DataAccess properti diatur untuk memfasilitasi akses data dari tabel pengguna1.

using System;  
using System.Data;  
using System.Data.Sql;  
using System.Data.SqlTypes;  
using Microsoft.SqlServer.Server;  
using System.Data.SqlClient;  
  
public partial class UserDefinedFunctions  
{  
    [SqlFunction(DataAccess = DataAccessKind.Read)]  
    public static string func1()  
    {  
        // Open a connection and create a command  
        SqlConnection conn = new SqlConnection("context connection = true");  
        conn.Open();  
        SqlCommand cmd = conn.CreateCommand();  
        cmd.CommandText = "SELECT str_val FROM table1 WHERE int_val = 10";  
        // where table1 is a user table  
        // Execute this command   
        SqlDataReader rd = cmd.ExecuteReader();  
        // Set string ret_val to str_val returned from the query  
        string ret_val = rd.GetValue(0).ToString();  
        rd.Close();  
        return ret_val;  
    }  
}  
Imports System  
Imports System.Data  
Imports System.Data.Sql  
Imports System.Data.SqlTypes  
Imports Microsoft.SqlServer.Server  
Imports System.Data.SqlClient  
  
Public partial Class UserDefinedFunctions  
    <SqlFunction(DataAccess = DataAccessKind.Read)> _   
    Public Shared Function func1() As String  
        ' Open a connection and create a command  
        Dim conn As SqlConnection = New SqlConnection("context connection = true")   
        conn.Open()  
        Dim cmd As SqlCommand =  conn.CreateCommand()   
        cmd.CommandText = "SELECT str_val FROM table1 WHERE int_val = 10"  
        ' where table1 is a user table  
        ' Execute this command   
        Dim rd As SqlDataReader =  cmd.ExecuteReader()   
        ' Set string ret_val to str_val returned from the query  
        Dim ret_val As String =  rd.GetValue(0).ToString()   
        rd.Close()  
        Return ret_val  
    End Function  
End Class  

Untuk rutinitas Transact-SQL, SQL Server memperoleh properti rutin langsung dari definisi rutin. Untuk rutinitas CLR, server tidak menganalisis isi rutinitas untuk mendapatkan properti ini. Sebagai gantinya, Anda dapat menggunakan atribut kustom untuk kelas dan anggota kelas yang diimplementasikan dalam bahasa .NET Framework.

Atribut kustom yang diperlukan untuk rutinitas CLR, jenis yang ditentukan pengguna, dan agregat ditentukan dalam Microsoft.SqlServer.Server namespace layanan.

Lihat Juga

Atribut Kustom untuk Rutinitas CLR