在SQL Server中将varchar和char转换为nvarchar和nchar是否安全?

时间:2009-08-05 10:43:59

标签: c# sql-server linq-to-sql unicode types

我们目前在数据库中有许多类型为varchar的列。使用它们的应用程序在C#中,它使用Linq2Sql进行通信(或称之为通信)。

我们希望支持unicode字符,这意味着我们必须将varchar列转换为nvarchar。这是安全的操作吗?是仅仅更改列类型和更新dbml文件的问题,还是需要做更多的事情? C#代码有什么变化吗?我是否需要以某种方式手动转换数据库中已存在的文本,还是为我处理?

5 个答案:

答案 0 :(得分:2)

从varchar / char到nvarchar / nchar应该是非常安全的。我做了好几次,没有遇到任何问题。但这只取决于我的经验!

答案 1 :(得分:2)

另外请记住,nvarchar列的最大长度为4000,这是varchar 8000的一半。

答案 2 :(得分:0)

除了可以测量它之外的小的全局性能影响之外,如果您突然发送不兼容的类型,由于查询计划不同,可能会产生性能影响。但是如果你在整个板上使用nvarchar是不应该发生的(一般情况下,如果你将varchars发送到将它作为nvarchar处理的东西,它更有可能发生。

答案 3 :(得分:0)

有时你会更好地使用nvarchar,因为L2S倾向于为varchar列传递nvarchar参数。除此之外,是的,你将使用更多的磁盘空间db-side,但现在这应该不是问题。

至于转换,涉及的列上的索引和FK约束(如果有的话)将受到影响,因此您需要脚本删除并根据需要重新创建它们......

答案 4 :(得分:0)

可能不是问题,因为我假设您打算从ASCII,ISO-8859-1(或类似的东西)转到UTF-8,但如果没有,请确保您知道SQL Server使用什么进程来设置更改表格时的正确编码。