2009-10-27 5 views
0

이 사용자 정의 함수가 있습니다.사용자 정의 함수

public partial class UserDefinedFunctions 
{ 
    static int i; 
    [SqlFunction(IsDeterministic = true)] 
    public static SqlSingle f() 
    { 
     return new SqlSingle(1.3F); 
    } 
}; 

그러나 i이 읽기 ​​전용 인 경우에만 작동합니다. 왜?

답변

2

읽기 - 쓰기 인 경우 '작동'합니다. '없는 작품'당신이 정적 필드가 포함되어 있기 때문에 어셈블리가 SQL에 설치할 수 없습니다 의미로

하면, 정적 클래스 변수의 사용은 이유 CLR Hosted Environment 설명에 대한 위험 :

우리는 이러한 고려 사항을 감안할 때 은 정적 변수 의 사용을 금지하고 SQL Server에 사용 된 클래스 의 정적 데이터 멤버를 사용하지 마십시오. SAFEEXTERNAL_ACCESS 어셈블리, SQL 서버는 CREATE ASSEMBLY 한번에 어셈블리의 메타 데이터를 검사하고 정적 데이터 멤버 변수의 사용을 찾은 경우 이러한 어셈블리 생성 실패.

어셈블리를 UNSAFE로 표시하려면 정적 변수와 관련된 위험을 이해하고 SQL이 어셈블리를 허용한다는 표시로 표시하십시오.

관련 문제