-
06-07-2019 - |
문제
이 사용자 정의 기능이 있습니다.
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이 어셈블리를 수락한다는 신호로 어셈블리를 안전하지 않은 것으로 표시하십시오.
제휴하지 않습니다 StackOverflow