我讀了很多關於「選擇正確的排序規則」以及類似的東西,但我還沒有給下面的問題的解決方案:需要MsSQL整理建議。不區分大小寫的querys但大小寫敏感數據需要
我們得到了以下星座: 我們將應用程序的數據庫從Advantage數據庫切換到MsSQL Server 2014.
所有數據庫的排序規則均爲「Latin1_General_CI_AS」(ReportServer和ReportServerTempDB除外)。我們選擇了這種排序規則,因爲「Latin1_General_CS_AS」會對我們現有的查詢產生很大的影響,因爲查詢中的表名將更改爲區分大小寫。
要保留querys的數據順序,我們使用「Latin1_General_CS_AS」創建了字符串列。
我們實際上遇到的問題是,由於整理衝突,帶有連接到temptable的查詢失敗。我很清楚,TempDB表具有「Latin1_General_CI_AS」作爲整理,並在與物理表的字符串列連接時發出錯誤。
我們可以解決我們的問題,如果可以構建不區分大小寫的查詢而不考慮數據庫整理。
另一種解決方法是將數據庫的排序規則更改爲「Latin1_General_CS_AS」,並將查詢中的所有表名更正爲原始表名。
如果我想到的第一個解決方案是不可能的,那麼有人有一個很好的建議如何解決排序問題?
第二種解決方案實際上不可行。我們從來不關心大寫字母,而只是簡單地進行數據庫交互,因爲它值得它來糾正這一切。
對於我們的問題,可能有第三種解決方案還是第四種解決方案?
Thx 4提前幫助。
當你加入,你可以將整理 - 表的連接表B在col1整理Latin1_General_CI_AS = COL2 – BeanFrog
如果使用Unicode(nvarchar,nchar)不需要任何「正確」排序。如果你沒有,應該先修正一個錯誤。即使是歐盟的語言(如拉丁文,德文和西里爾文),也沒有可以處理的排序規則。 –
@BeanFrog這不是一個解決方案,只是一個快速修復。在某些情況下,不會出現錯誤,但優化器將不能使用基礎索引 –