Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#核心库是否可以通过SQLCLR批准?_F#_Sqlclr - Fatal编程技术网

F#核心库是否可以通过SQLCLR批准?

F#核心库是否可以通过SQLCLR批准?,f#,sqlclr,F#,Sqlclr,根据thread,F#Core必须是SQLCLR批准的,才能标记为安全的组件。这是计划吗?甚至可以做到吗?我相信可以做到。然而,F#核心库是微软的唯一财产。这意味着您不能修改其代码并重新编译以匹配和遵守SQLCLR SAFE。我建议您使用Microsoft的connect网站向Microsoft添加建议 Microsoft connect位于:(注册前,您必须在live.com或hotmail.com上注册并拥有电子邮件帐户) 要手动添加.NET DLL并将其集成到SQL Server,可以执行

根据thread,F#Core必须是SQLCLR批准的,才能标记为安全的组件。这是计划吗?甚至可以做到吗?

我相信可以做到。然而,F#核心库是微软的唯一财产。这意味着您不能修改其代码并重新编译以匹配和遵守SQLCLR SAFE。我建议您使用Microsoft的connect网站向Microsoft添加建议

Microsoft connect位于:(注册前,您必须在live.com或hotmail.com上注册并拥有电子邮件帐户)

要手动添加.NET DLL并将其集成到SQL Server,可以执行以下操作:

在本例中,必须首先编译F#代码中的DLL。我从MSDN库链接执行此步骤:

只是别忘了将PERMISSION\u 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
创建程序集后, 我们现在可以进入我们的地狱世界了 方法,通过使用创建过程 陈述我们会打电话给我们的客户 程序“你好”:

创建过程后, 它可以像普通汽车一样运行 用汇编语言编写的存储过程 Transact-SQL。执行以下命令 命令:

EXEC hello
这将导致以下结果 SQL Server管理中的输出 Studio消息窗口

Hello world!
编辑:根据下面的评论,他对F#现在是开源的看法是正确的!您可以修改并重新编译它以满足您的需要


编辑:添加有关如何将DLL集成到SQL Server CLR集成的更多详细指南。

一个技巧,尽管很讨厌,但可能是使用fsc的--standalone标志(又称F#编译器)。这甚至可以添加到项目设置中,并嵌入到输出工件F#运行时库中(以及所有其他可嵌入的依赖项)。我相信,在这一点上,只要将程序集标记为SQLCLR safe,您就应该能够做您想要做的事情。

F#核心库与所有编译器一样,是使用开源许可证Apache 2.0发布的。你当然可以修改和重新编译它,你也可以发布它,甚至在商业用途上。完成-嗨,丹尼尔。。如果您认为我的答案对您有帮助,请将其标记为您问题的答案。:)@艾里万:问题是“有计划吗”和“能做到吗”,你没有完全回答。我希望可能有一位潜藏在周围的微软员工会插话。不过,您建议将其发布在MS Connect上是很有帮助的,所以我投了赞成票。@Daniel您能再读一遍我的答案吗?我说,我相信这是可以做到的,特别是现在F#是开源的。您可以简单地从源代码重新构建它。我自己做的。但正如我在回答的第一段中所指出的,最好将F#的SQLCLR遵从性留给Microsoft,因为他们仍然拥有它,即使它是开源的。这仍然不允许将程序集标记为
安全的
。它所做的只是将不安全代码移动到自定义程序集中。
Hello world!