Ian*_*oyd 38 sql-server sqlclr user-defined-functions sql-server-2008-r2
假设程序集dll:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:将程序集目标指向.NET 3.5,因为SQL Server不支持.NET 4.0
将程序集复制到一个位置,"创建"程序集工作正常:
CREATE ASSEMBLY CLRFunctions FROM 'c:\Program Files\My App\CLRFunctions.dll';
Run Code Online (Sandbox Code Playgroud)
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)
创建用户定义的函数失败:
CREATE FUNCTION NormalizeString(@s nvarchar(max), @normalizationForm varchar(50))
RETURNS nvarchar(max)
AS EXTERNAL NAME CLRFunctions.T.NormalizeString
Run Code Online (Sandbox Code Playgroud)
失败并出错:
Msg 6505, Level 16, State 2, Procedure NormalizeString, Line 1
Could not find Type 'T' in assembly 'CLRFunctions'.
Run Code Online (Sandbox Code Playgroud)
为什么SQL Server无法T
在程序集中找到类型CLRFunctions
?
注意:为什么T
?因为微软做了.
Mar*_*ith 85
尝试
CREATE FUNCTION NormalizeString(@s nvarchar(max),
@normalizationForm nvarchar(50))
RETURNS nvarchar(max)
AS EXTERNAL NAME CLRFunctions.[CLRFunctions.T].NormalizeString
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18547 次 |
最近记录: |