2012-07-03 166 views
1

我有一個WPF + WCF應用程序,它現在運行良好2年,但現在他們有一個需求:他們想在數據庫中輸入一些數據,而不是歐洲字母表(例如西裏爾字母)。SQL Server中,如何將默認排序規則設置爲unicode?

問題是,數據庫作爲設置爲Latin1_General_CI_AS_WS的排序規則,並且當我在其中存儲數據(例如,вмешательство)並檢索它們時,我得到了一些「??????」相反(當進入SQL Server Management工作室時)。

應用程序的其他部分已經知道使用其他類型的字母表(不是閱讀方向,但不是我的直接問題)。

那麼如何在現有數據庫中將排序規則設置爲unicode? SQL Server管理工作室中的整理字段爲灰色。

我正在使用EntityFramework進行與數據庫的所有通信,而且我還得到了那些「????」如果我檢索任何字段。

+2

問題的數據類型是什麼?整理不是你的問題。 –

+0

我還沒有測試過所有的情況,但主要是varchar(X)和文本 – J4N

+0

這是你的問題。它應該是'nvarchar(x)'和'ntext'。 –

回答

12

你的問題不是整理,它是數據類型。

正如評論中所述,您使用的是varchar(x)text。這些類型不存儲unicode數據。您需要使用nvarchar(x)ntext。 (如果您使用SQL 2005或更新版本,則應使用nvarchar(MAX)而不是ntext

+0

Ouch,所以我必須更改整個數據庫類型:/。爲什麼使用nvarchar(max)而不是ntext? – J4N

+0

不,不是數據庫類型。列數據類型。而text/ntext已被棄用,並會在即將推出的版本中被刪除。 nvarchar(max)的工作方式與ntext相同。 –

+0

對不起,我沒有寫得對。謝謝你的文字解釋。我做了一些測試,但看起來它仍然寫着「??????」在數據庫中。是否有必要再次生成我的EF對象? – J4N