De acuerdo con this hilo, F # Core debe estar aprobado por SQLCLR para que los conjuntos se marquen SAFE
. ¿Esto está planeado? ¿A caso se puede hacer?¿Pueden las librerías F # core ser aprobadas por SQLCLR?
Respuesta
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.
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.
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
- 1. Funcionalidades estadísticas de F # (o librerías .NET)
- 2. ¿Por qué las propiedades no pueden ser de solo lectura?
- 3. ¿Las preferencias compartidas pueden ser privadas?
- 4. ¿Pueden las anotaciones Java ser unitarias?
- 5. las plantillas pueden no ser "virtuales"
- 6. ¿Pueden las fibras de rubí ser concurrentes?
- 7. ¿Pueden las estructuras realmente no ser nulas en C#?
- 8. ¿Las claves de las matrices asociativas javascript deben ser cadenas, o pueden ser cualquier objeto?
- 9. ¿Pueden las especializaciones de una función de plantilla ser virtuales?
- 10. ¿Pueden los parámetros ser constantes?
- 11. dbus_bus_request_name(): las conexiones no pueden ser propietarias del servicio
- 12. Los argumentos de misterio aprobadas por setTimeout en Firefox
- 13. ¿Pueden los diseños ser elegidos por los controladores Grails?
- 14. ¿Por qué los generadores no pueden ser en escabeche?
- 15. ¿Por qué los campos de clase no pueden ser var?
- 16. SQLCLR y DateTime2
- 17. ¿Los constructores de C++ pueden ser plantillas?
- 18. librerías de aserciones independientes?
- 19. ¿Cómo pueden los punteros de las subclases ser estrictamente iguales a los punteros de clase padre?
- 20. ¿Por qué las operaciones LINQ pueden ser más rápidas que un bucle normal?
- 21. Las claves externas en postgresql pueden ser violadas por el disparador
- 22. ¿Qué código destaca las librerías para Ruby?
- 23. ¿Qué incorporaciones de Perl no pueden anularse en CORE :: GLOBAL?
- 24. Funciones/funtores como parámetros de plantilla. Pueden ser almacenados?
- 25. HttpWebRequest se ejecuta lentamente por primera vez dentro de SQLCLR
- 26. Core Image vs Core Graphics
- 27. ¿Pueden los eventos ser entre procesos?
- 28. Validación y librerías fluidas
- 29. ¿Pueden las cadenas de entrada y salida para sprintf() ser las mismas?
- 30. Extensiones de comunidad SQLCLR o biblioteca común
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
¡Tienes razón! ¡Gracias! –
Hecho - https://connect.microsoft.com/VisualStudio/feedback/details/670494/sqclr-approve-f-core-libraries – Daniel