문제

이 사용자 정의 기능이 있습니다.

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

그러나 그것은 단지 만 작동합니다 i 준비되어 있습니다. 왜요?

도움이 되었습니까?

해결책

또한 읽기 쓰기가 있으면 '작동'합니다.

'작동하지 않는 것'이라는 점은 정적 필드가 포함되어 있기 때문에 어셈블리를 SQL에 설치할 수 없다는 것을 의미합니다. 정적 클래스 변수의 사용은 다음과 같은 이유로 위험합니다. CLR은 환경을 주최했습니다:

이러한 고려 사항이 주어지면 SQL Server에 사용되는 클래스의 정적 변수 및 정적 데이터 구성원의 사용을 권장하지 않습니다. 을 위한 SAFE 그리고 EXTERNAL_ACCESS 어셈블리, SQL Server는 어셈블리의 메타 데이터를 검사합니다. CREATE ASSEMBLY 정적 데이터 구성원 및 변수의 사용을 찾으면 그러한 어셈블리의 생성에 시간과 실패합니다.

정적 변수와 관련된 위험을 이해하고 SQL이 어셈블리를 수락한다는 신호로 어셈블리를 안전하지 않은 것으로 표시하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top