4

将数据从一个 SQL 服务器传输到另一个,但在比较和同步架构时收到以下错误。我们正在使用redgate SQL compare 来完成。

无法解决等于操作的排序规则冲突

基础 SQL 服务器是 SQL_Latin1_General_CP1_CI_AS,目标服务器是 Latin1_General_CI_AS

4

5 回答 5

6

SQL 比较有一个忽略排序规则的选项。在比较项目配置中的“选项”选项卡下查看。

于 2009-02-13T16:26:47.803 回答
0

由于上述原因,“忽略排序规则”绝对行不通。当迁移对象(如在具有不同排序规则的文本字段上使用 JOIN 子句的视图和存储过程)时会出现此问题。

如果有人更改了服务器上的默认排序规则,并且 JOIN 另一侧的列使用特定排序规则,那么您就导致了这个问题。它会发生在 SQL 比较中,以及如果您只是在 SSMS 中手动编写对象并自己移动它。

有两种方法可以修复它 - 您可以在连接上指定 COLLATE 子句并明确声明要使用的排序规则,或者您可以更改目标数据库默认排序规则以匹配源。

恐怕没有 SQL 比较“灵丹妙药”来解决这个问题。

于 2014-09-25T08:30:07.647 回答
0

听起来服务器的排序规则设置不同。

您如何传输数据,您是否在新平台上执行数据库恢复?

无论哪种方式,您都需要确保在新环境中使用与源环境中当前使用的相同排序规则。

希望这是有道理的,如果您需要进一步的帮助,请告诉我。

于 2009-02-13T16:28:34.397 回答
0

您是否对 SQL 比较实用程序有问题,或者担心不同的服务器排序规则会导致问题?

您可以更改目标服务器的排序规则以匹配基本服务器

如果这是不可能的,那么让每台服务器上的数据库的排序规则匹配,然后你唯一真正的问题可能是你创建的任何临时表(它们将有一个与服务器/TEMPDB 匹配的默认排序规则),所以只要您显式创建临时表(即不使用 SELECT * INTO #TEMP FROM MyTable 创建它)并显式为任何 varchar/text 列分配排序规则,您应该可以

于 2009-02-13T16:29:40.463 回答
0

我克服这个问题的方法是通过 SQL Compare 生成脚本,然后删除(或替换)Collat​​ion 特定代码。这是相对快速和容易做到的,最后我手动将脚本应用到目标服务器/数据库。

于 2011-02-21T18:35:56.780 回答