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

时间:2020-03-05 18:58:27  来源:igfitidea点击:

我们正在将应用程序升级到完全Unicode兼容性,因为我们最近有了Delphi 2009,它提供了现成的功能。我正在寻找具有升级应用程序以接受Unicode字符的经验的任何人。明确回答以下任何问题。

  • 我们需要将VarChars更改为NVarchar,将Char更改为NChar。这里有陷阱吗?
  • 我们需要更新所有sql语句,以在任何sql字符串之前包含N。因此,Update tbl_Customer set Name ='Smith'必须成为Update tbl_Customer set Name = N'Smith'。对于某些字段,是否有任何默认方法可以默认。看来这仍然是非凡的。
  • 是否有可能在SQLServer中设置任何默认值来简化此设置?

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

解决方案

回答

达米安

我不确定答案有多有用。在过去十年中,我们编写了70万行已编译的代码库,其中包含大量sql查询。大多数都被标准化为几个功能,这些功能是数据库上大多数更新的基础。这些可以很简单地更新。但是,我们还需要检查CustomerName ='%s'的每个where子句,该子句现在应该是CustomerName = N'%s'

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

回答

Oracle不需要我们使用" nvarchar"来存储Unicode字符串,可以将服务器配置为在UTF-8中存储" varchar2"。如果以前仅支持ASCII,则它应该是透明的。这样可以避免在应用程序端进行所有将"`"转换为" N"的搜索和替换操作。

至于Damien的观点:它现在可能对我们没有帮助,但是我们真的应该把摆脱非参数化查询作为优先事项。从维护,性能和安全的角度来看,它们不过是拖累系统。

回答

对于SQL Server而言,很明显的是,nchar / nvarchar的限制是对应的char / varchar的一半(除非我们将所有> 4000的内容迁移到nvarchar(max))