Usar assemblies verificável com o SQL servidor

Procedimentos armazenados, empacotados estendidos sistema autônomo bibliotecas de vínculo dinâmico (DLLs), fornecem uma maneira de estender a funcionalidade do SQL servidor por meio das funções desenvolvidas com Visual C++. Procedimentos armazenados estendidos são implementados sistema autônomo funções em DLLs.Em adição a funções, procedimentos armazenados estendidos também podem definir tipos definidos pelo usuário and funções agregadas (por exemplo, soma ou média).

Quando um cliente executa um procedimento armazenado estendido, procura do SQL servidor para a DLL associados com o procedimento armazenado estendido e carrega a DLL.O SQL servidor chama o procedimento armazenado estendido solicitado e executa-o em um contexto de segurança especificado.O estendida procedimento armazenado, em seguida, passa resultado define e retorna parâmetros para o servidor.

SQL Server 2005 Fornece extensões para Transact-SQL (T-SQL) para que você possa instalar assemblies verificáveis no SQL servidor. O conjunto de permissões do SQL servidor Especifica o contexto de segurança com os seguintes níveis de segurança:

  • Modo irrestrito: Executar o código de sua responsabilidade; não tem código seja verificável com segurança de tipos.

  • Modo de segurança: Executar verificável typesafe código; compilado com/CLR: safe.

Modo seguro requer que os assemblies executados seja verificável typesafe.

Para criar e carregar um assembly pode ser verificado no SQL servidor, use sistema autônomo comandos Transact-SQL CREATE ASSEMBLY e DROP ASSEMBLY da seguinte forma:

CREATE ASSEMBLY <assemblyName> FROM <'Assembly UNC Path'> WITH 
  PERMISSION_SET <permissions>
DROP ASSEMBLY <assemblyName>

O comando PERMISSION_SET Especifica o contexto de segurança e pode ter valores UNRESTRICTED, SAFE ou EXTENDED.

Além disso, você pode usar o comando criar função para BIND a nomes de método em uma classe:

CREATE FUNCTION <FunctionName>(<FunctionParams>)
RETURNS returnType
[EXTERNAL NAME <AssemblyName>:<ClassName>::<StaticMethodName>]

Para obter mais informações, consulte Transact-SQL Reference (Transact-SQL).

Exemplo

O seguinte script SQL (por exemplo, nomeado "MyScript.sql") carrega um assembly no SQL servidor e disponibiliza um método de uma classe:

-- Create assembly without external access
drop assembly stockNoEA
go
create assembly stockNoEA
from 
'c:\stockNoEA.dll'
with permission_set safe

-- Create function on assembly with no external access
drop function GetQuoteNoEA
go
create function GetQuoteNoEA(@sym nvarchar(10))
returns real
external name stockNoEA:StockQuotes::GetQuote
go

-- To call the function
select dbo.GetQuoteNoEA('MSFT')
go

Scripts de SQL podem ser executadas interativamente no consulta SQL Analyzer ou na linha de comando com o utilitário SQLCMD.exe.A seguinte linha de comando se conecte a meu_servidor, usa o banco de dados padrão, usa uma conexão confiável, MyScript.sql entradas e saídas MyResult.txt.

sqlcmd –S MyServer -E –i myScript.sql –o myResult.txt

Consulte também

Referência

Como: Migrar para o/CLR: safe

Classes, Structures, and Uniões

Outros recursos

Transact-SQL Reference (Transact-SQL)

Extended Stored Procedures

Programming Extended Stored Procedures

sqlcmd Utility