2011-11-08 5 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; 
      } 
     } 
    } 

私は、コードをコンパイルし、この

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

と同様のSQLServerからアセンブリを作成し、

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'. 

なぜ私はそれを公開したとしてもclass1が認識されない理由を理解していません。 誰か助けてください。

答えて

3

あなたのクラスが(ClassLibrary1)にある名前空間がありません。そのため、正しいcreate function文は次のとおりです。

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