Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Common Language Runtime (CLR) di .NET Framework consente l'uso di parole chiave descrittive, denominate attributi. Questi attributi forniscono informazioni aggiuntive per molti elementi, ad esempio metodi e classi. Gli attributi vengono salvati nell'assembly con i metadati dell'oggetto e possono essere usati per descrivere il codice ad altri strumenti di sviluppo o per influire sul comportamento di runtime all'interno di SQL Server.
Quando si registra una routine CLR con SQL Server, SQL Server deriva un set di proprietà sulla routine. Queste proprietà di routine determinano le funzionalità della routine, incluso se la routine può essere indicizzata. Ad esempio, l'impostazione della DataAccess proprietà su DataAccessKind.Read consente di accedere ai dati dalle tabelle utente di SQL Server all'interno di una funzione CLR. Nell'esempio seguente viene illustrato un caso semplice in cui la DataAccess proprietà è impostata per facilitare l'accesso ai dati da una tabella utente 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
Per Transact-SQL routine, SQL Server deriva proprietà di routine direttamente dalla definizione di routine. Per le routine CLR, il server non analizza il corpo della routine per derivare queste proprietà. È invece possibile usare attributi personalizzati per classi e membri di classe implementati in un linguaggio .NET Framework.
Gli attributi personalizzati necessari per le routine CLR, i tipi definiti dall'utente e le aggregazioni sono definiti nello spazio dei Microsoft.SqlServer.Server nomi .