Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O CLR (Common Language Runtime) do .NET Framework permite o uso de palavras-chave descritivas, chamadas atributos. Esses atributos fornecem informações adicionais para muitos elementos, como métodos e classes. Os atributos são salvos no assembly com os metadados do objeto e podem ser usados para descrever seu código para outras ferramentas de desenvolvimento ou para afetar o comportamento de runtime dentro do SQL Server.
Quando você registra uma rotina CLR com o SQL Server, o SQL Server deriva um conjunto de propriedades sobre a rotina. Essas propriedades de rotina determinam os recursos da rotina, incluindo se a rotina pode ser indexada. Por exemplo, definir a DataAccess propriedade para DataAccessKind.Read permitir que você acesse dados de tabelas de usuário do SQL Server dentro de uma função CLR. O exemplo a seguir mostra um caso simples em que a propriedade é definida para facilitar o DataAccess acesso a dados de uma tabela de usuário1.
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
Para rotinas de Transact-SQL, o SQL Server deriva propriedades rotineiras diretamente da definição de rotina. Para rotinas CLR, o servidor não analisa o corpo da rotina para derivar essas propriedades. Em vez disso, você pode usar atributos personalizados para classes e membros de classe implementados em um idioma do .NET Framework.
Os atributos personalizados necessários para rotinas CLR, tipos definidos pelo usuário e agregações são definidos no Microsoft.SqlServer.Server namespace.