Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Utilizar ensamblados comprobables con SQL Server (C++/CLI)

Los procedimientos almacenados extendidos, empaquetados como bibliotecas de vínculos dinámicos (archivos DLL), constituyen una manera de extender la funcionalidad de SQL Server a través de funciones desarrolladas con Visual C++. Estos procedimientos se implementan como funciones en los archivos DLL. Además de las funciones, los procedimientos almacenados extendidos también pueden definir tipos definidos por el usuario y funciones de agregado (como SUM o AVG).

Cuando un cliente ejecuta un procedimiento de este tipo, SQL Server busca el archivo DLL asociado a él y lo carga. SQL Server llama al procedimiento almacenado extendido solicitado y lo ejecuta en un contexto de seguridad especificado. A continuación, el procedimiento almacenado extendido pasa conjuntos de resultados y devuelve parámetros al servidor.

SQL Server 2005 proporciona extensiones a Transact-SQL (T-SQL) para que se puedan instalar ensamblados comprobables en SQL Server. El conjunto de permisos de SQL Server especifica el contexto de seguridad, con los siguientes niveles:

  • Modo no restringido: el código se ejecuta bajo su responsabilidad; no tiene por qué tener seguridad de tipos comprobable.

  • Modo seguro: el código se ejecuta con seguridad de tipos comprobable; se compila con /clr:safe.

El modo seguro requiere que los ensamblados ejecutados tengan seguridad de tipos comprobable.

Para crear y cargar un ensamblado comprobable en SQL Server, utilice los comandos de Transact-SQL CREATE ASSEMBLY y DROP ASSEMBLY como se indica a continuación:

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

El comando PERMISSION_SET especifica el contexto de seguridad y puede tener los valores UNRESTRICTED, SAFE o EXTENDED.

Además, puede utilizar el comando CREATE FUNCTION para enlazar a nombres de método de una clase:

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

El script SQL siguiente (por ejemplo, "MyScript.sql" con nombre) carga un ensamblado en SQL Server y pone a disposición un método de una clase:

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

Los scripts SQL se pueden ejecutar interactivamente en el Analizador de consultas SQL o en la línea de comandos con la utilidad sqlcmd.exe. La línea de comandos siguiente conecta a MyServer, utiliza la base de datos predeterminada, utiliza una conexión de confianza, especifica MyScript.sql y genera MyResult.txt.

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

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft