2008-09-26 69 views

回答

7

如何:

ALTER DATABASE database_name COLLATE collation_name 

見BOL爲list of collation options,並挑選區分大小寫的一個最適合您的需要(即一個你的客戶端使用)。
顯然,它可能是一個好主意,使你的數據庫的完整備份您嘗試在此之前。我從來沒有親自嘗試使用與服務器的默認排序規則不同的排序規則的數據庫,所以我不知道任何「陷阱」。但是,如果您有良好的備份並在將其部署到您的客戶端之前在您的環境中進行測試,我無法想象涉及很多風險。

0

你必須更改數據庫排序規則。您還需要更改表和列級別的排序規則。我相信你可以在那裏找到一個腳本,如果你谷歌它。

14

你實際上並不需要更改排序規則對整個數據庫,如果你聲明它需要區分大小寫的表或列。事實上,您可以根據需要將其附加到單個操作中。

 
SELECT name WHERE 'greg' = name COLLATE Latin1_GENERAL_CS_AS 

我知道了,你說過你希望這適用於整個數據庫。但我提到這一點是因爲在某些託管環境中,您無法控制此數據庫創建時設置的屬性。

+2

但不這樣做,應用LOWER()的列,否則將無法使用索引... – 2008-09-26 03:01:55

1

如果您有具有不同的排序規則,以實例默認情況下,DB,你會遇到問題,當你試着和暫時的加入你的表。臨時表有實例的排序規則(因爲它們是系統對象),所以你需要使用COLLATE database_default子句中的聯接。

select temp.A, table.B 
from #TEMPORARY_TABLE temp inner join table 
on temp.X COLLATE database_default = table.Y 

這會強制temp.X(在此示例中)的歸類到當前數據庫的歸類。