Omówienie integracja CLR atrybuty niestandardowe
Aparat plików wykonywalnych języka wspólnego (CLR) z .NET Framework Umożliwia użycie opisowych słów kluczowych, nazywanych atrybutami. Atrybuty te zawierają dodatkowe informacje dla wielu elementów, takich jak klas i metod.Atrybuty są zapisywane w zestawie z metadanymi obiektu i mogą być używane do opisu kodu do innych narzędzi do tworzenia lub mieć wpływ na zachowanie środowiska wykonawczego wewnątrz SQL Server.
Po zarejestrowaniu procedury CLR z SQL Server, SQL Server pochodzi zestaw właściwości dotyczące rutynowych. Te właściwości rutynowych określają możliwości procedury, łącznie z rutynowych mogą być indeksowane.Na przykład, ustawienie DataAccess Właściwość DataAccessKind.Read Umożliwia dostęp do danych z SQL Server tabele użytkowników wewnątrz funkcja środowiska CLR. W poniższym przykładzie przedstawiono prosty przypadek, w którym DataAccess Właściwość jest ustawiona w celu ułatwienia dostępu do danych z tabela użytkowników Tabela1.
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
Dla Transact-SQL procedury, SQL Server właściwości rutynowych pochodzi bezpośrednio z rutynowych definicji. Dla procedur CLR serwera nie analizuje treść procedury w celu uzyskania tych właściwości.Zamiast tego można używać niestandardowych atrybutów dla klasy i implementowane elementy klas w .NET Framework język.
Atrybuty niestandardowe potrzebne do środowiska CLR procedur, typy zdefiniowane przez użytkownika i zagregowanych są zdefiniowane w Microsoft.SqlServer.Server obszar nazw.