2013-12-19 3 views
1

일부 라이브러리를 만들고이를 MSSQL의 CLR 어셈블리로 사용하려고합니다. 요점은 내 lib 디렉토리에 설치할 수없는 'iAnywhere.Data.SQLAnywhere'lib 디렉토리에 대한 참조가 있다는 것입니다. 오류 : 정책을 기존의 사용에서 계속 때문에 'iAnywhere.Data.SQLAnywhere가'를 설치할 수 없습니다 SQL Server 2008에 어셈블리를 설치할 수 없습니다.

조립.

나는 권장 사항을 구현하고 지금은 내 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 : Server 버전의 SQL Server 2008 R2 (64)이다. MediatorCLR이 x64 lib로 구축되었지만 SQLAnywhere.dll이 x86으로 구축 된 것이 거의 확실합니다. 이유가 될 수 있습니까? https, 86 - - https 64 : Upd2


: 여기은 libs와에 드롭 박스 링크입니다.


Upd3

: 나는 SQLAnywhere.dll 모든 때문에 86 빌드 옵션에서로드 할 수없는 것을 생각하기 시작하고 나는 그것이 필요합니다 공공 정적 방법이 있는지 모르겠어요. 확실히 다른 종류의 참조를 구현해야합니다. 당신은 SQL Server 시스템에 .DLL이 복사 한 후이 절

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

+0

잘못된 .NET 버전 :

는 또한, 당신이 당신의 어셈블리 파일을 복사하기 위해 SQL 서버 파일 시스템에 액세스 할 수없는 경우에, 당신은 generate hex code 후 .NET 어셈블리를 등록 할 수 있습니다? http://stackoverflow.com/questions/2781624/sqlclr-using-the-wrong-version-of-the-net-framework –

+0

nope, 2.0 both libs –

+0

SQL Server의 버전은 무엇입니까? –

답변

1

에주의는 여기에서, SQL 서버 시스템에서 유효한 경로를 지정해야합니다.

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

경로가 유효하지 않은 라이브러리를 설치할 수 없습니다. 여기에 붙여 넣기 전에 길이를 짧게했습니다. 너무 깁니다. –

관련 문제