2015-09-04 24 views

回答

3

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

唯一可能的数据丢失问题是如果您有任何varchar(max)值已经大于1GB。

在大多数排序规则中nvarchar每个字符使用2个字节,而varchar每个字符使用1个字节。将串> 1 GB的字符串长度加倍会明显超过2GB的限制。

即使这样我会期待一个错误消息而不是无声截断,但可能在某些设置(如ANSI_WARNINGS OFF)下可能会默默失败。

+0

所以只是为了澄清你的说法唯一可能的错误是如果表中的字符串值大于1GB的大小? –

+0

是的。您可能会遇到其他错误,例如磁盘空间不足,但这不会导致数据丢失。它会被回滚。 –

+0

我看到,我最担心的截断问题,在sql服务器我去设计视图更改数据类型从varchar为nvarchar,它重新创建表。似乎没有得到错误?这是改变数据类型的正确方法吗? –