Compartilhar via


Usando Assemblies verificáveis com SQL Server (C + + / CLI)

Estendida procedimentos armazenados, empacotados como bibliotecas de vínculo dinâmico (DLLs), fornecem uma maneira para estender a funcionalidade de SQL Server por meio das funções desenvolvidas com Visual C++.Procedimentos armazenados estendidos são implementados como funções em DLLs.Além das funções, procedimentos armazenados estendidos podem também definir tipos definidos pelo usuário e funções agregadas (como soma ou média).

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

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

  • Modo irrestrito: executar código em seu próprio risco; código não precisa ser verificável com segurança de tipos.

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

Modo de segurança requer os assemblies executados seja verificável typesafe.

Para criar e carregar um assembly verificável em SQL Server, use os comandos de Transact-SQL CREATE ASSEMBLY e SOLTAR ASSEMBLY da seguinte maneira:

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 estendido.

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

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

Exemplo

O seguinte script SQL Myscript. (por exemplo, chamado "SQL") carrega um assembly no SQL Server 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 SQL podem ser executadas interativamente no SQL Query 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, insere Myscript. SQL e saídas MyResult.txt.

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

Consulte também

Referência

Como: migrar para /CLR: safe (C + + / CLI)

Classes, estruturas e uniões