2011-04-14 14 views

Respuesta

1

Creo que se puede hacer. Sin embargo, la biblioteca F # core es propiedad exclusiva de Microsoft. Esto significa que no puede modificar su código y volver a compilarlo para que coincida y cumpla con SQLCLR SAFE. Sugiero que agregue sugerencias a Microsoft utilizando el sitio web de Microsoft Connect.

Microsoft connect se encuentra en: http://connect.microsoft.com (debe registrarse y tener una cuenta de correo electrónico en live.com o hotmail.com antes de registrarse).

Para añadir manualmente el archivo DLL .NET e integrarlo a SQL Server, puede hacer esto:

En este ejemplo, el archivo DLL a partir del código C# tiene que ser compilado en primer lugar. Doy este paso desde el enlace de MSDN Library: http://msdn.microsoft.com/en-us/library/ms254956(v=vs.80).aspx

Simplemente no olvides agregar PERMISSION_SET = SAFE al comando CREATE ASSEMBLY.

Estos son los pasos que cito desde arriba enlace:

cargar y ejecutar el "Hola Mundo" procedimiento almacenado en SQL Server

Una vez que el procedimiento de ejemplo con éxito ha recopilado, se puede probarlo en SQL Servidor. Para ello, abra SQL Server Management Studio y cree una nueva consulta , conectándose a una base de datos de prueba adecuada (por ejemplo, la base de datos de muestra AdventureWorks). Nosotros necesitaremos crear el conjunto para que podamos acceder al procedimiento almacenado. Para este ejemplo, supondremos que ha creado el ensamblado helloworld.dll en el directorio C: \. Agregue el siguiendo la instrucción de Transact-SQL al su consulta.

CREATE ASSEMBLY helloworld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE 

Una vez que se haya creado el montaje, que ahora puede acceder a nuestro método HelloWorld utilizando el procedimiento Creación de comunicado. Vamos a llamar a nuestra almacenado procedimiento "hola":

CREATE PROCEDURE hello 
AS 
EXTERNAL NAME helloworld.HelloWorldProc.HelloWorld 

Una vez que el procedimiento ha sido creado, se puede ejecutar como un procedimiento almacenado normales escrito en de Transact-SQL. Ejecutar el siguiente comando :

EXEC hello 

Esto debería dar lugar a la salida de siguiente en la ventana de mensajes de SQL Server Management Studio .

Hello world! 

Editar: basado en el autor del comentario más abajo, que tiene razón en F # es ahora de código abierto! Puede modificarlo y recompilarlo para adaptarlo a sus necesidades.

Edición: añadiendo más detalles sobre cómo integrar la DLL a la integración CLR de SQL Server.

+3

La biblioteca F # core, como todo el compilador, se lanzó con la licencia de código abierto Apache 2.0. Ciertamente puede modificarlo y volver a compilarlo, también puede distribuirlo, incluso con fines comerciales. – Laurent

+0

¡Tienes razón! ¡Gracias! –

+1

Hecho - https://connect.microsoft.com/VisualStudio/feedback/details/670494/sqclr-approve-f-core-libraries – Daniel

1

Un truco, tan desagradable como es, sería el uso de la bandera --standalone de fsc (también conocido como el compilador F #). Esto incluso se puede agregar en la configuración del proyecto e incrusta en el artefacto de salida la biblioteca de tiempo de ejecución de F # (junto con todas las demás dependencias que se consideran incrustables). Creo que en ese momento debería poder hacer exactamente lo que quiera simplemente marcando su ensamblaje como seguro para SQLCLR.

+0

Esto todavía no permite que el conjunto se marque como 'SAFE'. Todo lo que hace es mover el código inseguro a su ensamblaje personalizado. – Daniel

Cuestiones relacionadas