Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Common Language Runtime (CLR) von .NET Framework ermöglicht die Verwendung beschreibender Schlüsselwörter, die als Attribute bezeichnet werden. Diese Attribute enthalten zusätzliche Informationen für viele Elemente, z. B. Methoden und Klassen. Die Attribute werden in der Assembly mit den Metadaten des Objekts gespeichert und können verwendet werden, um Ihren Code für andere Entwicklungstools zu beschreiben oder um das Laufzeitverhalten in SQL Server zu beeinflussen.
Wenn Sie eine CLR-Routine bei SQL Server registrieren, leitet SQL Server eine Reihe von Eigenschaften über die Routine ab. Diese Routineeigenschaften bestimmen die Funktionen der Routine, einschließlich der Indizierung der Routine. Wenn Sie beispielsweise die DataAccess Eigenschaft DataAccessKind.Read so festlegen, dass Sie auf Daten aus SQL Server-Benutzertabellen in einer CLR-Funktion zugreifen können. Das folgende Beispiel zeigt einen einfachen Fall, in dem die Eigenschaft so festgelegt ist, dass der DataAccess Datenzugriff aus einer Benutzertabelle1 erleichtert wird.
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
Für Transact-SQL Routinen leitet SQL Server Routineeigenschaften direkt aus der Routinedefinition ab. Bei CLR-Routinen analysiert der Server nicht den Textkörper der Routine, um diese Eigenschaften abzuleiten. Stattdessen können Sie benutzerdefinierte Attribute für Klassen und Klassenmember verwenden, die in einer .NET Framework-Sprache implementiert sind.
Die benutzerdefinierten Attribute, die für CLR-Routinen, benutzerdefinierte Typen und Aggregate erforderlich sind, werden im Microsoft.SqlServer.Server Namespace definiert.