WEB开发网
开发学院数据库MSSQL Server 如何使用SQL CLR表值函数进行扩展 阅读

如何使用SQL CLR表值函数进行扩展

 2007-12-27 15:30:25 来源:WEB开发网   
核心提示:部署和调试 GetProximity:部署使用 Web 服务的表值函数比前一示例要更为复杂,部署使用 Web 服务的表值函数的全部步骤如下:1.将包含 GetProximity 函数的项目配置为预先生成 XML 序列化程序集,如何使用SQL CLR表值函数进行扩展(11),当 .NET Framework 调用 Web

部署和调试 GetProximity:

部署使用 Web 服务的表值函数比前一示例要更为复杂。部署使用 Web 服务的表值函数的全部步骤如下:

1.将包含 GetProximity 函数的项目配置为预先生成 XML 序列化程序集。当 .NET Framework 调用 Web 服务时,它会动态生成一个程序集来处理 SOAP XML 的序列化和反序列化。这就出现了一个问题,因为 SQL Server CLR 主机不允许在运行时动态加载程序集。因此,必须在编译时生成 Web 服务调用的 XML 序列化程序集,并向 SQL Server 注册它。若要预先从 Visual Studio 生成此程序集,请从“项目”菜单中,单击“属性”并选择“生成”。将“生成序列化程序集”设置为“开启”。XML 序列化 DLL 随即会随您的项目生成并被添加到 Bin 目录中。其名称为 [ProjectName].XmlSerializers.dll。

2.将 System.Security.AllowPartiallyTrustedCallers 属性添加到该程序集中。此操作可通过在该项目的 AssemblyInfo.cs 中添加以下行来完成:

[assembly: System.Security.AllowPartiallyTrustedCallers]

这样,XML 序列化程序集就可以和包含 GetProximity 函数的主程序集通信。

3.向 SQL Server 注册在步骤 1 中创建的 XML 序列化 DLL。SAFE 权限集就足够了。

4.为包含 GetProximity 表值函数的 DLL 创建一个非对称密钥。

5.为该非对称密钥创建登录信息,并授予它 EXTERNAL ACCESS 权限集。

6.使用 EXTERNAL ACCESS 权限集注册包含 GetProximity 的程序集。

7.注册表值函数 GetProximity。

由于这个依赖关系链相对而言更为冗长和复杂,所以我放弃了 Visual Studio 的部署机制,而选择了作为生成后步骤运行的 Transact-SQL 脚本,它执行部署步骤 3-7。示例项目中包含了该脚本。

上一页  6 7 8 9 10 11 12 13  下一页

Tags:如何 使用 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接