2011-11-08 2 views
0

CLR 함수를 만들려고합니다. 일반 클래스 라이브러리 파일을 만들고 아래와 같이 코딩했습니다. 일부 클래스를 찾을 수 없어서 SqlServerProject를 사용하고 싶지 않습니다..NET에서 UserDefined CLR 함수 만들기

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.SqlServer.Server; 
using System.Data.SqlTypes; 
using Microsoft.SqlServer.Types; 

    namespace ClassLibrary1 
    { 
     public partial class Class1 
     { 
      [Microsoft.SqlServer.Server.SqlFunction] 
      public static SqlString GetPassword(SqlString Value) 
      { 
       return Value; 
      } 
     } 
    } 

I 코드를 컴파일 SQLSERVER에서 어셈블리를 생성이

CREATE ASSEMBLY ASSEM 
authorization dbo 
FROM 'E:\NBM Sites\tvt.stage.asentechdev1.com\ClassLibrary1.dll' WITH PERMISSION_SET = SAFE; 

좋아

CREATE FUNCTION SampleFunc 
( 
    @value nvarchar(max) 
) 
RETURNS nvarchar(max) with execute as caller 
AS 
    External Name ASSEM.Class1.GetPassword 
GO 

하지만 만들 상기 함수 다음과 같은 기능을 생성 말하는 오류가 발생했습니다.

Could not find Type 'Class1' in assembly 'ClassLibrary1'. 

은 나뿐만 아니라 내가 그것을 공개 한의 클래스 1가 인식되지 않는 이유를 이해 해달라고. 제발 도와주세요.

답변

3

클래스가있는 네임 스페이스가 누락되었습니다 (ClassLibrary1). 올바른 함수 작성 문은 다음과 같습니다.

CREATE FUNCTION SampleFunc 
( 
    @value nvarchar(max) 
) 
RETURNS nvarchar(max) with execute as caller 
AS 
    External Name [ASSEM].[ClassLibrary1.Class1].[GetPassword] 
GO