2009-10-23 86 views
0

我需要将非Unicode的SQL Server 2005数据库转换为基于Unicode的数据库。我有数百个存储过程,当然数据存储在varchar中。我知道我需要将所有数据类型更改为unicode等效(varchar to nvarchar),但是我不必更改存储的特效的写入方式,还是继续像以前一样工作?我正试图弄清楚为什么需要从非Unicode到具有许多存储过程的大型数据库进行unicode更改。将非Unicode的SQL Server数据和存储的过程转换为Unicode

回答

3

是的,你需要更新你的数据和存储过程,但要记住的重要一点是你只需要将你的列的一些更改为UNICODE。对于任何“内部”的东西,你不需要支付UNICODE的费用。

这项改变有很多工作要做,但不要盲目改变一切。我之前一直在接受这种改变,这很痛苦。 (使用nvarchar(1)存储'y'和'n'是愚蠢的。)

+0

请注意,在SQL Server 2008 R2中,如果使用数据压缩,则只支付实际Unicode数据的Unicode成本。压缩算法非常智能 - 它不会浪费ASCII字符的两个字节,并且通过存储偏移量而不是实际的2字节字符,即使在Unicode数据上也可以实现显着压缩。将其添加到词典的顶部,以及其他使用数据压缩获得的压缩。当然,你支付压缩/解压的罚款,所以总是测试。一些博客(前三名):http://is.gd/4yleO – 2009-10-23 23:37:40

+0

我的失望是UNICODE压缩是仅限于Enterprise。这是SQL Server背后的一个问题,现在他们正在迎头赶上一个很好的解决方案,但是它们限制在Enterprise(我不会使用它)。 – 2009-10-24 05:29:57