Compartir a través de


Descripción general de los atributos personalizados de integración CLR

Common Language Runtime (CLR) de .NET Framework permite el uso de palabras clave descriptivas, denominadas atributos. Estos atributos proporcionan información adicional para muchos elementos, como métodos y clases. Los atributos se guardan en el ensamblado con los metadatos del objeto y se pueden usar para describir el código a otras herramientas de desarrollo o para afectar al comportamiento en tiempo de ejecución dentro de SQL Server.

Al registrar una rutina CLR con SQL Server, SQL Server deriva un conjunto de propiedades sobre la rutina. Estas propiedades de rutina determinan las funcionalidades de la rutina, incluido si la rutina se puede indexar. Por ejemplo, establecer la DataAccess propiedad en DataAccessKind.Read le permite acceder a datos desde tablas de usuario de SQL Server dentro de una función CLR. En el ejemplo siguiente se muestra un caso sencillo en el que la propiedad se establece para facilitar el DataAccess acceso a datos desde una tabla de usuario1.

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  

Para Transact-SQL rutinas, SQL Server deriva propiedades de rutina directamente de la definición de rutina. En el caso de las rutinas CLR, el servidor no analiza el cuerpo de la rutina para derivar estas propiedades. En su lugar, puede usar atributos personalizados para clases y miembros de clase implementados en un lenguaje de .NET Framework.

Los atributos personalizados necesarios para las rutinas CLR, los tipos definidos por el usuario y los agregados se definen en el Microsoft.SqlServer.Server espacio de nombres.

Véase también

Atributos personalizados para rutinas CLR