公布64位SQL CLR存储过程出错
发布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或者之前的。