根据SQLCLR线程,F#核心必须是SQLCLR批准的,程序集才能标记为SAFE。这是有计划的吗?这件事能做到吗?
发布于 2011-04-15 16:35:39
我相信这是可以做到的。然而,F#核心库是微软的独有财产。这意味着您不能修改它的代码并重新编译它来匹配和遵守SQLCLR SAFE。我建议您使用Microsoft的connect网站向Microsoft添加建议。
微软connect的网址是:http://connect.microsoft.com (在注册之前,您必须在live.com或hotmail.com上注册并拥有电子邮件帐户)。
若要手动添加.NET DLL并将其集成到SQL Server,可以执行以下操作:
在本例中,必须首先编译F#代码中的动态链接库。我从MSDN Library链接执行此步骤: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语句添加到查询中。
使用PERMISSION_SET = SAFE从“c:\helloworld.dll”创建程序集helloworld
一旦创建了程序集,我们现在就可以通过使用create procedure语句来访问HelloWorld方法。我们将存储过程命名为"hello":
将过程hello创建为外部名称helloworld.HelloWorldProc.HelloWorld
一旦创建了过程,就可以像用Transact-SQL编写的普通存储过程一样运行它。执行以下命令:
EXEC问候
这将在SQL Server Management Studio消息窗口中产生以下输出。
你好,世界!
编辑:根据下面的评论,他是对的,F#现在是开源的!您可以修改和重新编译它以满足您的需要。
编辑:添加有关如何将动态链接库集成到SQL Server CLR集成的更多详细指南。
发布于 2011-12-13 01:29:17
一个非常糟糕的技巧是使用fsc的--standalone标志(也称为F#编译器)。这甚至可以添加到项目设置中,并将F#运行时库(以及所有其他被认为是可嵌入的依赖项)嵌入到输出工件中。我相信,在这一点上,您只需将程序集标记为SQLCLR safe,就应该能够准确地执行您想要的操作。
https://stackoverflow.com/questions/5666703
复制相似问题