迁移现有应用程序以接受Unicode

时间:2008-09-17 09:53:32

标签: sql-server oracle delphi unicode migration

我们正在将我们的应用程序升级到完全的Unicode兼容性,因为我们最近获得了开箱即用的Delphi 2009。我正在寻找任何有升级应用程序以接受Unicode字符的人。具体回答以下任何问题。

  • 我们需要将VarChars更改为NVarchar,Char更改为NChar。这里有没有问题。
  • 我们需要更新所有sql语句,以便在任何sql字符串前包含N.所以更新tbl_Customer set Name ='Smith'必须变为更新tbl_Customer set Name = N 'Smith'。是否有任何方法可以默认为某些字段。看起来很不寻常,这仍然是必需的。
  • 是否可以在SQLServer中设置任何默认设置,使这更简单?

ps我们还需要升级我们的Oracle代码

3 个答案:

答案 0 :(得分:1)

Oracle不要求您使用nvarchar来存储Unicode字符串 - 可以将服务器配置为以UTF-8存储varchar2。如果您之前只支持ASCII,则它应该是透明的。这应该可以防止'N'的所有应用程序端搜索和替换的需要。

至于达米恩的观点:它现在可能对您没有帮助,但您应该优先考虑摆脱非参数化查询。从维护,性能和安全角度来看,它们只不过是对系统的拖累。

答案 1 :(得分:1)

明显的SQL Server是nchar / nvarchar的限制是其char / varchar对应物的一半(除非你将所有内容> 4000迁移到nvarchar(max))

答案 2 :(得分:0)

达米恩

我不确定你的答案有多有用。我们有大量700,000行编译的代码库,这些代码库是在过去十年中编写的,其中包含大量的SQL查询。大多数标准化为一些函数,这些函数是数据库上大多数更新的基础。这些可以非常简单地更新。但是,我们还需要检查CustomerName ='%s'的每个where子句,现在应该是CustomerName = N'%s'

这是一个真正的问题需要一个真正的答案。