我在使用unicode(希伯來文和俄文)與SQL CLR集成時遇到問題。作爲測試,我在Visual Studio中做了一個簡單的數據庫項目具有以下CLR存儲過程:如何使SQLCLR中的SqlContext.Pipe.Send存儲過程與unicode一起工作?
[Microsoft.SqlServer.Server.SqlProcedure]
public static void TestProc()
{
//Console.OutputEncoding = System.Text.Encoding.Unicode;
Trace.WriteLine("Unicode test: blip");
Trace.WriteLine("Unicode test: בליפ");
Trace.WriteLine("Unicode test: Блип");
SqlContext.Pipe.Send("Unicode test: blip");
SqlContext.Pipe.Send("Unicode test: בליפ");
SqlContext.Pipe.Send("Unicode test: Блип");
}
發佈到一個測試數據庫和執行SQL服務器的存儲過程:
EXEC dbo.TestProc;
無論是跟蹤輸出和SQL服務器消息用'????'替換非英文字符。
我以爲SQL服務器和C#都使用unicode。在Windows窗體項目中使用unicode,例如通過將非英文文本添加到文本框中,可以正常工作。
我該如何解決這個問題?有我缺少的設置嗎?
這個問題涉及到以下幾點:How to pass nvarchar (non-English) to CLR (C#) stored procedure?
我用你的代碼測試,還得到了「????「對於希伯來語和俄語,即使我將數據庫的默認校對更改爲」Hebrew_100_CI_AS「(這不應該是必需的,但只是爲了測試),我將在明天看到更多的內容。 –
哦,萬一它是相關的,我也嘗試發送字符串,只包含希伯來字符/除俄羅斯以外的其他字符,並獲得所有????,所以問題不在於混合不同的代碼頁(我不知道這是不是一件事) – MASQ