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


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

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

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

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