我读了很多关于“选择正确的整理”和类似的东西,但我仍然没有针对以下问题的解决方案:
我们得到了以下星座: 我们将应用程序的数据库从Advantage Database切换到MsSQL Server 2014。
所有数据库都具有相同的排序规则“Latin1_General_CI_AS”(ReportServer和ReportServerTempDB除外)。我们选择了这种排序规则,因为“Latin1_General_CS_AS”会对我们现有的查询产生很大影响,因为查询中的表名会更改为区分大小写。
为了保留查询的数据顺序,我们使用“Latin1_General_CS_AS”创建了字符串列。
我们实际遇到的问题是,由于排序规则冲突,对temptables的连接查询失败。我很清楚,TempDB表将“Latin1_General_CI_AS”作为排序规则,并在与物理表的字符串列连接时抛出错误。
我们可以解决我们的问题,如果可以构建不区分大小写的查询,而不管数据库整理。
另一方面,我们可以通过将数据库的排序规则更改为“Latin1_General_CS_AS”来解决问题,并将查询中的所有表名更正为与原始表名相同。
如果我想到的第一个解决方案不可能,那么有人对如何解决整理问题有一个很好的建议吗?
第二种解决方案实际上并不切实可行。我们从不关心资本化,只关注大量的数据库交互,因为它值得纠正它。
我们的问题可能有第三种或第四种解决方案吗?
Thx 4提前帮助。
答案 0 :(得分:0)
要强制排序最大化,可以使用COLLATE语句 请参阅:https://msdn.microsoft.com/en-us/library/ms184391.aspx
SELECT
a.col1,b.col2
FROM
table a join table b
ON a.col1 collate databse_default = b.col2 collate databse_default