2017-07-24 83 views
1

我用命令:SQL Server中创建ASSEMBLY

CREATE ASSEMBLY [xxxx] from 'my dll path ' 
WITH PERMISSION_SET = UNSAFE; 

,但我得到一个错误:

System.Web程序,版本= 4.0.0.0没有发现

为什么我需要.net框架的DLL?我不明白。

sql服务器安装.net框架。

+1

'CREATE ASSEMBLY'创建一个数据库对象来存放一个** .NET **程序集 - 因此,当然,您确实需要SQL Server内置的.​​NET框架。但是,SQL CLR不会包含'System.Web'程序集,它主要包含基于Web窗体的GUI控件 - 实际上,您在SQL Server代码中将不需要任何东西。但正如错误所指出的那样 - 你试图进入SQL Server的程序集显然*不会引用'System.Web'的依赖关系 - 摆脱它并且你应该没问题 –

+0

谢谢,我现在很清楚 – Ian

回答

2

SQL Server的内部CLR主机(即SQLCLR)是一个高度受限制的环境。它不像使用操作系统的CLR主机(即控制台应用程序和Windows /桌面应用程序,这是大多数程序员习惯的),更接近于创建一个Web应用程序,其中有共享资源并且不用于诸如UI之类的事物功能。 SQL Server的CLR中包含一个简短的库列表:Supported .NET Framework Libraries。其他.NET Framework库(如System.Web)需要手动加载,如果它们可以加载的话。通常最好避免这样的事情,因为这样做时你可能容易陷入困境。有关通常使用SQLCLR的更多信息,请参阅我在SQL Server Central上关于此主题撰写的一系列文章(需要免费注册以阅读该站点上的内容):Stairway to SQLCLR

在你的情况,如果你需要连接到一个网页或Web服务,您最好使用HttpWebRequestHttpWebResponse,因为它们包含在支持的图书馆,只需要EXTERNAL_ACCESS而不是UNSAFE

+0

谢谢你,现在我很清楚 – Ian