2013-12-19 54 views
1

我制作了一些库,并希望在MSSQL中将它用作CLR程序集。关键是我的lib有'iAnywhere.Data.SQLAnywhere'lib的引用,我无法安装。错误是:无法在SQL Server 2008上安装程序集

大会 “iAnywhere.Data.SQLAnywhere”无法安装,因为现有的 政策将保持它被使用。

我已经落实的建议,现在我的SQL的样子:

USE DB_Control 
GO 

ALTER DATABASE DB_Control SET TRUSTWORTHY ON WITH ROLLBACK IMMEDIATE 
GO 

ALTER DATABASE DB_Control SET TRUSTWORTHY ON 
GO 

exec sp_configure 'show advanced options', 1; 
GO 

RECONFIGURE; 
GO 

exec sp_configure 'clr enabled', 1; 
GO 

RECONFIGURE; 
GO 

CREATE ASSEMBLY [iAnywhere.Data.SQLAnywhere] 
AUTHORIZATION sa 
FROM '~\Debug\iAnywhere.Data.SQLAnywhere.dll' 
WITH PERMISSION_SET = UNSAFE 
GO 

CREATE ASSEMBLY ClrSqlMediator 
AUTHORIZATION sa 
FROM '~\Debug\SQLMediator.dll' 
WITH PERMISSION_SET = UNSAFE 
GO 

是否有人知道如何解决这一问题?


UPD:服务器版本的SQL Server 2008 R2(64位)。 My MediatorCLR构建为x64 lib,但我几乎可以将SQLAnywhere.dll构建为x86。这是原因吗?


UPD2:这里是Dropbox的链接库: 64 - https, 86 - https


Upd3:我开始以为SQLAnywhere.dll不能在所有x86版本的选项,因为加载和我不知道它有所需的public static方法。当然,我必须实施一些其他类型的参考。

+0

错误的.NET版本? http://stackoverflow.com/questions/2781624/sqlclr-using-the-wrong-version-of-the-net-framework –

+0

nope,2.0两个库 –

+0

哪个是SQL Server的版本? –

回答

1

注重有条款

FROM '~\Debug\iAnywhere.Data.SQLAnywhere.dll' 
FROM '~\Debug\SQLMediator.dll' 

在这里,你应该指定从SQL Server机器的有效路径,你复制后的SQL Server计算机上的.dll文件。

或者,万一你不必为了复制你的汇编文件访问SQL Server的文件系统,你可以generate hex code,然后注册.NET程序集:

CREATE ASSEMBLY <AssemblyName.dll> 
AUTHORIZATION [dbo] 
FROM <0x4D5A9000030000000400000.... generated hex code here> 
WITH PERMISSION_SET = SAFE 
GO 
+0

路径是有效的,我粘贴之前缩短它 - 这太长了 –

相关问题