2008-09-17 48 views
0

我們正在將我們的應用程序升級到完整的Unicode兼容性,因爲我們最近得到了Delphi 2009,它提供了開箱即用的功能。我正在尋找有升級應用程序接受Unicode字符經驗的人。具體回答以下任何問題。遷移現有的應用程序以接受Unicode

  • 我們需要將VarChars更改爲NVarchar,Char到NChar。這裏有什麼問題嗎?
  • 我們需要更新所有的sql語句以在任何sql字符串前包含N.所以更新tbl_Customer set Name ='Smith'必須成爲Update tbl_Customer set Name = N'Smith'。有什麼辦法可以默認這個特定的字段。這看起來非常特別,但仍然需要。
  • 是否有可能獲得在SQLServer中設置的任何默認設置,這將使這更簡單?

PS我們還需要提升我們的Oracle代碼

回答

1

Oracle不要求您使用nvarchar來存儲Unicode字符串 - 服務器可以配置爲以UTF-8存儲varchar2。如果你以前只支持ASCII,它應該是透明的。這應該防止需要所有的應用程序端搜索和替換'N'。至於Damien的觀點:它現在可能無法幫到你,但你應該真的把它作爲擺脫非參數化查詢的優先事項。從維護,性能和安全角度來看,它們只不過是對系統的一種拖累。

0

達明

我不知道你的答案是多麼有用。我們有大量700,000行編譯代碼庫,這些代碼庫在過去的十年中被編寫,其中包含大量的sql查詢。大部分功能都是標準化爲一些功能,這些功能是數據庫大部分更新的基礎。這些可以很簡單地更新。然而,我們還需要檢查CustomerName ='%s'的每個where子句,它現在應該是CustomerName = N'%s'

這是一個真正的問題,需要一個真正的答案。

1

明顯與SQL Server是爲NCHAR/nvarchar的限制是他們的CHAR/VARCHAR同行的一半(除非你遷移一切> 4000至爲nvarchar(MAX))

相關問題