将数据从一个SQL服务器传输到另一个SQL服务器,但是当比较Schema并同步时,会收到以下错误。我们使用redgate SQL compare来完成。
无法解决与操作相等的排序规则冲突
基本SQL服务器是SQL_Latin1_General_CP1_CI_AS,目标服务器是Latin1_General_CI_AS
答案 0 :(得分:6)
SQL Compare有一个忽略归类的选项。查看比较项目配置中的“选项”选项卡。
答案 1 :(得分:0)
听起来服务器的整理设置不同。
如何传输数据,是否在新平台上执行数据库还原?
无论哪种方式,您都需要确保在新环境中使用与源环境中当前相同的排序规则。
希望这是有道理的,如果您需要进一步的帮助,请告诉我。
答案 2 :(得分:0)
您对SQL Compare utlity有疑问,还是担心不同的服务器排序会导致问题?
您可以更改目标服务器的排序规则以匹配基本服务器
如果无法做到这一点,那么让每个服务器上的数据库的排序规则匹配,然后您唯一真正的问题可能是您创建的任何临时表(它们将具有与服务器/ TEMPDB匹配的默认排序规则) ,只要你显式创建临时表(即不使用SELECT * INTO #TEMP FROM MyTable创建它)并显式地为任何varchar / text列分配一个排序,你应该没问题
答案 3 :(得分:0)
我克服这个问题的方法是通过SQL Compare生成脚本,然后剥离(或替换)Collation特定代码。这是相对快速和容易的,最后我手动将脚本应用到目标服务器/数据库。
答案 4 :(得分:0)
如果有人更改了服务器上的默认排序规则,并且JOIN另一侧的列使用了特定的排序规则,则会导致此问题。它会发生在SQL Compare中,如果您只是手动编写SSMS中的对象并自行移动它。
修复它有两条道路 - 您可以在连接上指定COLLATE子句并明确说明要使用的排序规则,也可以更改目标数据库默认排序规则以匹配源。
我担心没有SQL Compare“魔术子弹”来解决这个问题。