栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL CLR:流式处理表值函数结果

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL CLR:流式处理表值函数结果

经过进一步的研究和反复试验,我找到了解决方案。我在这里提到的文章说

您的程序集必须使用Permission_set = external_access创建

说起来容易做起来难,但这是一个很好的起点。只需使用该行代替permission_set = safe就会出现错误:

为程序集“ assemblyName”创建组件失败,因为程序集“ assemblyName”未获得PERMISSION_SET =
EXTERNAL_ACCESS的授权。如果满足以下任一条件,则对程序集进行授权:数据库所有者(DBO)具有EXTERNAL ACCESS
ASSEMBLY权限,并且数据库具有TRUSTWORTHY数据库属性。或用具有相应登录名并具有EXTERNAL ACCESS
ASSEMBLY权限的相应证书或非对称密钥对程序集进行签名。

因此,我要做的第一件事是对我的dll文件进行签名。为此,请在Visual Studio
2010中转到项目属性的“签名”选项卡,然后选中“对程序集进行签名”并为其命名。对于此示例,名称为MyDllKey。我选择不使用密码保护它。然后,当然,我将dll文件复制到了sql
server:C: Temp

使用此页面作为参考,我使用以下3个命令基于上述键创建了SQL登录名:

CREATE ASYMMETRIC KEY MyDllKey FROM EXECUTABLE FILE = 'C:TempMyDll.dll'CREATE LOGIN MyDllLogin FROM ASYMMETRIC KEY MyDllKeyGRANT EXTERNAL ACCESS ASSEMBLY TO MyDllLogin

如上创建登录名后,我现在可以使用以下命令创建程序集:

CREATE ASSEMBLY [MyDll]FROM 'C:TempMyDll.dll'WITH PERMISSION_SET = EXTERNAL_ACCESS

现在剩下要做的就是使用正确的连接字符串。显然不能

enlist=false
与结合使用
connection=true
。这是我使用的连接字符串的示例。

string connStr = @"data source=serverNameinstanceName;initial catalog=DBName;integrated security=SSPI;enlist=false";

而且有效!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号