2011-07-04 2 views
6

매개 변수로 UtcTimeStamp 및 windowstimezoneid를 가져오고 TimeZone의 TimeStamp를 반환하는 사용자 정의 함수를 작성했습니다.SQL Server에서 사용자 정의 함수를 실행할 때 System.Security.HostProtectionException

그러나 나는 다음과 같은 오류 얻을 선택 간단한 그것을 실행하려면 :

A .NET Framework error occurred during execution of user-defined routine or aggregate "ToLocalTime": 
System.Security.HostProtectionException: Attempted to perform an operation that was forbidden by the CLR host. 

The protected resources (only available with full trust) were: All 
The demanded resources were: MayLeakOnAbort 

System.Security.HostProtectionException: 
    bei TimeFunctions.ToLocalTime(DateTime UtcTimestamp, String WindowsTimeZoneId) 

내가 SA으로 선택을 실행합니다. clr을 1로 설정했습니다. SQL Server 2008 R2 (10.50.1600)를 사용합니다.

누구나 내가이 일을하거나 내가 잘못했을 수있는 일을 설정해야한다는 것을 알고 있습니까?

답변

11

CLR 어셈블리는 trust levels.

이 일 때문에 "MayLeakOnAbort입니다"

을 사용하여 어느 안전한 무언가에 CLR을 변경하거나 안전하지 않은 권한을 가진 어셈블리를 다시 추가하는 데 필요한 권한의 안전하지 않은 권한이 필요합니다. "UNSAFE"라는 단어는 당연히 물론 ...

+0

처음에는 신뢰할 수있는 설정을하고 데이터베이스 소유자를 sa로 변경했으나 안전하지 않은 상태로 작동합니다. – mabstrei

+0

@gbn 어셈블리를 만들고 거기에 Unsafe 권한도 부여했지만 여전히 오류가 발생합니다. – Rahul

2

제 경우에는 CLR 코드에서 HashSet을 List로 변경하면이 문제가 해결됩니다. 왜 그런지 모르겠다. 바라건대 누군가가 도움이 되었기를 바랍니다.

+0

혼자서 이걸 발견 했어야했는데, 사람들이 이것을 알고 싶어서이 사람이 상향 투표를받을 가치가 있다고 생각합니다. –

관련 문제