首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

公布64位SQL CLR存储过程出错

2013-06-25 
发布64位SQL CLR存储过程出错操作系统: Windows Server 2008 R2 (64-bit)数据库: Microsoft SQL Server De

发布64位SQL CLR存储过程出错
操作系统: Windows Server 2008 R2 (64-bit)
数据库: Microsoft SQL Server Developer Edition (64-bit)
开发工具: Microsoft Visual Studio 2010
创建了 SQL CLR 的 VB.Net 项目,创建了空白的存储过程,编译成功,自动发布失败。
自己用SQL语句手工发布,语句

CREATE ASSEMBLY [abc]
    AUTHORIZATION [dbo]
FROM 'C:\...\abc.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS;

出错信息(翻译)为:
因为它内置的组件不支持公共语言运行库的版本,CREATE ASSEMBLY组件'abc'失败。

用 "Any PC" 和 "x64" 两种方式编译的 dll 都发布失败。
如何解决? SQL?CLR
[解决办法]
如果是存在提示没有权限的话。
在创建程序集前,执行以下语句:
 GRANT EXTERNAL ACCESS ASSEMBLY TO loginame
 ALTER DATABASE dbname SET TRUSTWORTHY ON
 (dbname 为准备创建的程序集所在的数据库,loginame 为该数据库的拥有者)
查询拥有者用户名
select suser_sname(owner_sid) from sys.databases where [name]='dbname'   
[解决办法]
另外说一下SQL SERVER 2008 R2是不支持.NET 4.0的assembly ,所以你发布的时候.NET版本要选择3.5或者之前的。

热点排行