我们当前使用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