Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

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

Os procedimentos armazenados estendidos, empacotados como (DLLs) bibliotecas de vínculo dinâmico) nativa, fornecem uma maneira para estender a funcionalidade do SQL Server com as funções desenvolvidas com Visual C++. Os procedimentos armazenados estendidos são implementados como funções dentro da DLL. Além das funções, procedimentos armazenados estendidos podem também definir tipos definidos pelo usuário e funções de agregação (como SUM ou AVG).

Quando um cliente executa um procedimento armazenado estendido, o SQL Server procura pela DLL associada com o procedimento armazenado estendido e carregar a DLL. O SQL Server chama o procedimento armazenado estendido solicitado e executá-lo em um contexto de segurança especificado. O procedimento armazenado estendido em passa conjuntos de resultados e retorna parâmetros de volta ao servidor.

SQL Server 2005 oferece extensões para T-SQL (Transact-SQL) para permitir que você instale os assemblies verificáveis no SQL Server. O conjunto de permissões do SQL Server especifica o contexto de segurança, com os seguintes níveis de segurança:

  • Modo ilimitado: Código de execução para seu próprio risco; o código não tem que ser tipo seguro verificável.

  • Modo de segurança: Execução de código de typesafe seguros de verificação; compilado com /clr:safe.

O modo de segurança requer assemblies executados ser seguros de verificação typesafe.

Para criar e carregar um assembly verificável no SQL Server, use os comandos Transact-SQL CREATE ASSEMBLY e DROP ASSEMBLY como segue:

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

O comando de PERMISSION_SET especifica o contexto de segurança, e pode ter os valores ILIMITADOS, SAFE, ou ESTENDIDOS.

Além disso, você pode usar o comando CREATE FUNCTION associar a nomes do método em uma classe:

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

O seguinte script SQL (por exemplo, denominado “MyScript.sql”) carrega um assembly no SQL Server e faz um método de uma classe disponível:

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

Os scripts SQL podem ser executados de forma interativa no analisador de consultas SQL ou na linha de comando com o utilitário de sqlcmd.exe. A linha de comando a seguir conecta-se ao MyServer, usa o base de dados padrão, usa uma conexão confiável, MyScript.sql, as entradas e saídas MyResult.txt.

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

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft