ASP + SQL Server 2005 專案需將輸入內容自動轉換為繁體中文儲存。ASP 端實作困難,改用 Microsoft Visual Studio International Pack 1.0 中的 ChineseConverter,透過 SQLCLR 整合至資料庫層。
CHTCHSConv.msiMicrosoft.SqlServer.Server、Microsoft.International.Converters.TraditionalChineseToSimplifiedConverterusing Microsoft.SqlServer.Server;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
namespace IMELSChineseConverter
{
public class MelsChineseConverter
{
[SqlFunction(DataAccess = DataAccessKind.None)]
public static string Convert(string text, string Direction)
{
string ctext = string.Empty;
if (Direction.ToLower() == "s2t")
{
ctext = ChineseConverter.Convert(text, ChineseConversionDirection.SimplifiedToTraditional);
}
else if (Direction.ToLower() == "t2s")
{
ctext = ChineseConverter.Convert(text, ChineseConversionDirection.TraditionalToSimplified);
}
return ctext;
}
}
}
開始 → 所有程式 → Microsoft SQL Server 2005 → 設定工具 → SQL Server 表面區域配置 → 功能 → CLR 整合 → 啟用
USE [DataBaseTest];
GO
ALTER DATABASE [DataBaseTest] SET TRUSTWORTHY ON;
CREATE ASSEMBLY IMELSChineseConverter
FROM 'D:\SqlCLR\IMELSChineseConverter.dll'
WITH PERMISSION_SET = UNSAFE;
USE [DataBaseTest];
GO
CREATE FUNCTION [dbo].[MelsChineseConverter]
(
@text nvarchar(max),
@Direction nvarchar(20)
)
RETURNS nvarchar(max)
WITH EXECUTE AS CALLER
AS EXTERNAL NAME [IMELSChineseConverter].[IMELSChineseConverter.MelsChineseConverter].[Convert];
SELECT [dbo].[MelsChineseConverter]('中國', 's2t');
-- 結果:中國
PERMISSION_SET = UNSAFE:因呼叫外部組件進行字元轉換TRUSTWORTHY ON:允許資料庫存取外部資源DataAccessKind.None:宣告不存取資料庫資料,提升效能