33
タイプが見つかりませんでしたアセンブリDLLを想定しますSQL Serverの:アセンブリ
using Microsoft.SqlServer.Server;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System;
using System.Text;
namespace CLRFunctions
{
public class T
{
[SqlFunction(DataAccess = DataAccessKind.Read)]
public static String NormalizeString(String s, String normalizationForm)
{
NormalizationForm form = NormalizationForm.FormC;
if (String.Equals(f, "FormD", StringComparison.OrdinalIgnoreCase))
form = NormalizationForm.FormD;
return = s.Normalize(form);
}
}
}
注:SQL Serverは、.NET 4.0
をサポートしていないとして、.NET 3.5にアセンブリをターゲットに場所にアセンブリをコピーし、アセンブリが正常に動作し、「作成」:
CREATE ASSEMBLY CLRFunctions FROM 'c:\Program Files\My App\CLRFunctions.dll';
注:そして、CLRを有効にします機能、それ以外の場合はbrokenbydefaultです:ユーザー定義関数を作成し
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
は失敗します。
CREATE FUNCTION NormalizeString(@s nvarchar(max), @normalizationForm varchar(50))
RETURNS nvarchar(max)
AS EXTERNAL NAME CLRFunctions.T.NormalizeString
はエラーで失敗します。
Msg 6505, Level 16, State 2, Procedure NormalizeString, Line 1
Could not find Type 'T' in assembly 'CLRFunctions'.
なぜSQL ServerがタイプT
を見つけることができませんアセンブリでCLRFunctions
?
注:なぜT
? Cause Microsoft did.
を試してみてください - これは私がSSMSでひわいな言葉を叫びさせました。 –
vs 2010ではデフォルトテンプレートではデフォルトで名前空間が設定されないため、完全修飾クラス名が正しくありませんでした。表記は:RegisteredAssemblyName。[FullyQualifiedClassName] .FunctionName –
あなたの答えは私の助けになりました。 –