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

Dan*_*iel 7 f# sqlclr

根据这个帖子,F#Core必须经SQLCLR批准才能标记组件SAFE.这是计划好的吗?甚至可以做到吗?

Eri*_*ono 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 库链接中执行此步骤: http://msdn.microsoft.com/en-us/library/ms254956(v =vs.80).aspx

只是不要忘记将 PERMISSION_SET = SAFE 添加到 CREATE ASSEMBLY 命令中。

以下是我从上面的链接引用的步骤:

在 SQL Server 中加载并运行“Hello World”存储过程

成功编译示例过程后,您可以在 SQL Server 中对其进行测试。为此,请打开 SQL Server Management Studio 并创建一个新查询,连接到合适的测试数据库(例如 AdventureWorks 示例数据库)。我们需要创建程序集,以便可以访问存储过程。对于此示例,我们假设您已在 C:\ 目录中创建了 helloworld.dll 程序集。将以下 Transact-SQL 语句添加到您的查询中。

CREATE ASSEMBLY helloworld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE
Run Code Online (Sandbox Code Playgroud)

创建程序集后,我们现在可以使用 create procedure 语句访问 HelloWorld 方法。我们将调用我们的存储过程“hello”:

CREATE PROCEDURE hello
AS
EXTERNAL NAME helloworld.HelloWorldProc.HelloWorld
Run Code Online (Sandbox Code Playgroud)

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

EXEC hello
Run Code Online (Sandbox Code Playgroud)

这应该会在 SQL Server Management Studio 消息窗口中产生以下输出。

Hello world!
Run Code Online (Sandbox Code Playgroud)

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

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

  • F# 核心库与所有编译器一样,通过开源许可证 Apache 2.0 发布。您当然可以修改并重新编译它,也可以分发它,甚至用于商业目的。 (3认同)