首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

整合 CLR 為 SQL Server 2005 增加簡繁中文轉換功能:完整實作指南

     編輯:關於SqlServer

專案背景

ASP + SQL Server 2005 專案需將輸入內容自動轉換為繁體中文儲存。ASP 端實作困難,改用 Microsoft Visual Studio International Pack 1.0 中的 ChineseConverter,透過 SQLCLR 整合至資料庫層。

環境準備

  1. 下載安裝 VS International Pack 1.0,執行 CHTCHSConv.msi
  2. 建立類別庫專案,參考 Microsoft.SqlServer.Server、Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter

CLR 函數程式碼

using 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;
        }
    }
}

SQL Server 端部署步驟

1. 啟用 CLR 整合

開始 → 所有程式 → Microsoft SQL Server 2005 → 設定工具 → SQL Server 表面區域配置 → 功能 → CLR 整合 → 啟用

2. 建立組件 (Assembly)

USE [DataBaseTest];
GO
ALTER DATABASE [DataBaseTest] SET TRUSTWORTHY ON;
CREATE ASSEMBLY IMELSChineseConverter 
FROM 'D:\SqlCLR\IMELSChineseConverter.dll' 
WITH PERMISSION_SET = UNSAFE;

3. 建立 T-SQL 包裝函數

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:宣告不存取資料庫資料,提升效能
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved