我们目前使用SQL发布向导来备份我们的数据库模式和数据,但是我们有一些带有散列密码的数据库表,其中包含空字符(chr(0))。当SQL发布向导生成插入数据脚本时,当我们尝试运行生成的SQL时,空字符会导致错误 - 它似乎在脚本中第一个此字符实例后忽略ALL TEXT。我们最近尝试了RedGate SQL Compare,发现它与此角色存在同样的问题。我通过对违规记录运行ascii()sql函数确认它是ascii字符代码0。
我们得到的错误示例是:
Unclosed quotation mark after the character string '??`????{??0???
有趣的部分是,我无法真正粘贴示例Insert语句,因为当然在粘贴时忽略CHR(0)之后出现的所有内容!
答案 0 :(得分:1)
将列的定义更改为VARBINARY。您存储在那里的数据似乎不是一个合适的VARCHAR开始。
这会破坏使用该列的代码,因为您将在客户端中获得byte [] CLR tpe,并且应该相应地更改插入/更新代码。但毕竟,passowrd哈希是一个byte [],而不是一个字符串。