根据this主题,F#Core必须经过SQLCLR批准才能将程序集标记为SAFE
。这是计划好的吗?它甚至可以完成吗?
答案 0 :(得分:1)
我相信可以做到。但是,F#核心库是Microsoft的唯一属性。这意味着您无法修改其代码并重新编译它以匹配并符合SQLCLR SAFE。我建议您使用Microsoft的connect网站向Microsoft添加建议。
Microsoft connect位于:http://connect.microsoft.com(您必须在注册前注册并在live.com或hotmail.com上设置电子邮件帐户)。
要手动添加.NET DLL并将其集成到SQL Server,您可以执行以下操作:
在此示例中,必须首先编译F#代码中的DLL。我从MSDN Library链接中执行此步骤: http://msdn.microsoft.com/en-us/library/ms254956(v=vs.80).aspx
不要忘记将PERMISSION_SET = SAFE添加到CREATE ASSEMBLY命令。
以下是我从上面链接引用的步骤:
在SQL Server中加载并运行“Hello World”存储过程
样本程序成功完成后 编译后,可以在SQL中测试它 服务器。为此,请打开SQL Server 管理工作室并创建一个新的 查询,连接到合适的测试 数据库(例如, AdventureWorks示例数据库)。我们 我们需要创建组件 可以访问存储过程。对于 这个例子,我们假设你 创建了helloworld.dll 汇编在C:\目录中。添加 遵循Transact-SQL语句 你的查询。
CREATE ASSEMBLY helloworld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE
创建装配后, 我们现在可以访问我们的HelloWorld 使用create过程的方法 声明。我们会打电话给我们存储 程序“你好”:
CREATE PROCEDURE hello AS EXTERNAL NAME helloworld.HelloWorldProc.HelloWorld
创建程序后, 它可以像正常一样运行 写的存储过程 的Transact-SQL。执行以下操作 命令:
EXEC hello
这应该导致以下结果 SQL Server Management中的输出 Studio消息窗口。
Hello world!
编辑:根据下面的评论者,他对F#的权利现在是开源的!您可以修改并重新编译它以满足您的需求。
编辑:添加有关如何将DLL集成到SQL Server CLR集成的更多详细信息指南。
答案 1 :(得分:1)
一个令人讨厌的技巧,就是使用fsc(又名F#编译器)的--standalone标志。这甚至可以添加到项目设置中,并嵌入到F#运行时库的输出工件中(以及所有其他被认为可嵌入的依赖项)。我相信在那时你应该能够通过将你的装配标记为SQLCLR安全来完成你想要的。