F#核心库是否可以获得SQLCLR批准?

时间:2011-04-14 16:51:48

标签: f# sqlclr

根据this主题,F#Core必须经过SQLCLR批准才能将程序集标记为SAFE。这是计划好的吗?它甚至可以完成吗?

2 个答案:

答案 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安全来完成你想要的。