在我们的开发人员和生产SQL Server之间,数据库,表和某些列的排序规则存在差异,这对开发造成了严重破坏。事情将在dev上运行,然后在升级时由于归类冲突而中断,数据和结构将从prod复制到dev,这又由于冲突而中断对dev的查询,等等。我们将通过明确定义有时会在查询中使用COLLATION选项,或者在有问题的表中设置每一列的排序规则来解决该问题。前者似乎在性能上受到打击,而后者是PITA。
是否有任何脚本或任何东西可以显示数据库或对象上的排序规则差异或信息,或者有关自动调和差异以使我们保持同步的方式的建议?
此外,有关调试查询中的排序规则冲突的任何技巧也将很不错。我不知道冲突的实际位置,最终不得不逐行进行检查并覆盖它。一团糟。
感谢您的任何想法!
通常,在临时表,表变量等上使用“ COLLATE DATABASE_DEFAULT”
排序规则冲突通常发生在服务器与数据库的排序规则冲突中,在这种情况下,服务器为tempdb。
坦率地说,我将努力调整您的归类,并在每个数据库中全部归类。
如果您在服务器,数据库和列之间进行混合和匹配,那么就没有神奇的子弹了。您可以先在代码中查找所有COLLATE子句(请参见上文),然后确保删除所有列的排序规则…。