我們當前使用SQL發佈嚮導來備份我們的數據庫模式和數據,但是我們有一些使用包含空字符(chr(0))的散列密碼的數據庫表。當SQL發佈嚮導生成插入數據腳本時,當我們嘗試並運行生成的SQL時,空字符會導致錯誤 - 它會在腳本中此角色的第一個實例後忽略ALL TEXT。我們最近試用了RedGate SQL Compare,發現它與這個字符有相同的問題。我通過對違規記錄運行ascii()sql函數來確認它是ascii字符代碼0。SQL INSERT腳本中Chr(0)的問題
,我們所得到的是錯誤的樣本是:
Unclosed quotation mark after the character string '??`????{??0???
有趣的部分是,我真的不能粘貼樣品插入語句,因爲出現當然一切後,CHR(0)是被粘貼時忽略!
你使用什麼哈希算法會產生Chr(0)作爲有效的字符?問題出在那裏,而不是在INSERT語句中。 Chr(0)一直被用作字符串終結符,這就是爲什麼沒有人會期望它後面有任何東西。您需要更改散列算法。 – 2009-11-19 16:39:56
我同意,但它是散列密碼的第三方算法(ASPDotNetStorefront)。我們有許多ASPDNSF網站,我們不能僅僅改變算法,已經有成千上萬的客戶已經擁有一個哈希密碼。我已經向他們提交了更改請求,希望他們刪除插入NULL字符的可能性。 – Keith 2009-11-19 17:14:51