Поделиться через


Общие сведения о пользовательских атрибутах интеграции со средой CLR

Среда CLR платформа .NET Framework позволяет использовать описательные ключевые слова, называемые атрибутами. Эти атрибуты содержат дополнительную информацию по многим элементам, таким как методы и классы. Атрибуты сохраняются в сборке вместе с метаданными объекта и могут использоваться для описания кода в других средствах разработки или для влияния на поведение среды выполнения в SQL Server.

При регистрации подпрограммы CLR в SQL Server SQL Server получает набор свойств этой подпрограммы. Эти свойства подпрограммы определяют возможности подпрограммы и в частности указывают на то, может ли она быть индексирована. Например, если задать DataAccess для свойства значение , DataAccessKind.Read можно получить доступ к данным из SQL Server пользовательских таблиц в функции CLR. В следующем примере показан простой случай, DataAccess когда свойство задается для упрощения доступа к данным из пользовательской таблицы table1.

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  

Для подпрограмм Transact-SQL SQL Server наследует свойства подпрограммы непосредственно из определения подпрограммы. Сервер не анализирует тексты подпрограмм CLR для получения этих свойств. Вместо этого можно использовать настраиваемые атрибуты для классов и членов классов, реализованных на платформа .NET Framework языке.

Пользовательские атрибуты, необходимые для подпрограмм CLR, пользовательских типов и агрегатов, определяются в пространстве имен Microsoft.SqlServer.Server.

См. также:

Настраиваемые атрибуты для подпрограмм СРЕДЫ CLR