2015-09-04 52 views

回答

3

可在varchar中表示的每個字符也可在nvarchar中表示。

唯一可能的數據丟失問題是如果您有任何varchar(max)值已經大於1GB。

在大多數排序規則中nvarchar每個字符使用2個字節,而varchar每個字符使用1個字節。將串> 1 GB的字符串長度加倍會明顯超過2GB的限制。

即使這樣我會期待一個錯誤消息而不是無聲截斷,但可能在某些設置(如ANSI_WARNINGS OFF)下可能會默默失敗。

+0

所以只是爲了澄清你的說法唯一可能的錯誤是如果表中的字符串值大於1GB的大小? –

+0

是的。您可能會遇到其他錯誤,例如磁盤空間不足,但這不會導致數據丟失。它會被回滾。 –

+0

我看到,我最擔心的截斷問題,在sql服務器我去設計視圖更改數據類型從varchar爲nvarchar,它重新創建表。似乎沒有得到錯誤?這是改變數據類型的正確方法嗎? –