SQL CLRのUnicode(ヘブライ語とロシア語のテキスト)との統合に問題があります。どちらSQLCLRでSqlContext.Pipe.Sendを作成する方法procはunicodeで動作しますか?
EXEC dbo.TestProc;
:
[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サーバーでストアドプロシージャを実行:テストとして、私は次のCLRストアドプロシージャをVisual Studioで簡単なデータベースプロジェクトを作りましたトレース出力とSQLサーバーメッセージは、英語以外の文字を '????'に置き換えます。
SQLサーバーとC#の両方がユニコードで動作すると思っていました。たとえば、英語以外のテキストをテキストボックスに追加するなど、Windowsフォームプロジェクトでユニコードを使用すると、正常に動作します。
どうすればこの問題を解決できますか?私は行方不明のいくつかの設定はありますか?
この質問は以下に関する:How to pass nvarchar (non-English) to CLR (C#) stored procedure?
私はあなたのコードでテストし、 "????私がデータベースのデフォルトの照合順序を「Hebrew_100_CI_AS」に変更したとしても(これは必要ではないがテストするだけです)、私はこれをさらに明日見ていきます。 –
ああ、関連性がある場合は、私はまた、ヘブライ語の文字だけを含む文字列を送信しようとしました。しかし、ロシア語だけでなく、すべての????を持っていました。問題は、別のコードページを混在させることではありません(私はそれが事であるかどうかわかりません)。 – MASQ