web-dev-qa-db-ja.com

SQL Server照合順序を大文字と小文字を区別するものから大文字と小文字を区別しないものに変更しますか?

最近、SQL Server 2008をインストールし、大文字と小文字を区別する照合順序を選択しました。インスタンス全体で大文字と小文字を区別しないようにします(そのインスタンスのデータベースではありません)。照合順序を変更すると、既存のデータベースに影響しますか?もしそうなら、どのように?

35
JPReddy

基本的に、新しい照合でmasterデータベースを再構築するには、インストールを再度実行する必要があります。サーバー全体の照合を他の方法で変更することはできません。

見る:

Update:データベースの照合を変更する場合、T-SQLの次のスニペットを使用して現在の照合を取得できます。

SELECT name, collation_name 
FROM sys.databases
WHERE name = 'test2'   -- put your database name here

これにより、次のような値が得られます。

Latin1_General_CI_AS

_CIは「大文字と小文字を区別しない」という意味です-大文字と小文字を区別する場合は、_CS その代わりに:

Latin1_General_CS_AS

したがって、T-SQLコマンドは次のようになります。

ALTER DATABASE test2 -- put your database name here
   COLLATE Latin1_General_CS_AS   -- replace with whatever collation you need

次を使用して、サーバーで使用可能なすべての照合のリストを取得できます。

SELECT * FROM ::fn_helpcollations()

次を使用して、server's現在の照合を確認できます。

SELECT SERVERPROPERTY ('Collation')
60
marc_s

それはできますが、変更はデータベースに挿入される新しいデータに影響します。長期的には、上記の提案に従ってください。

また、ストアドプロシージャまたは関数のパラメータ、エイリアスデータ型、変数にデータベースのデフォルトの照合が割り当てられるなど、照合をオーバーライドできる特定のトリックがあります。エイリアスタイプの照合を変更するには、エイリアスを削除して再作成する必要があります。

COLLATE句を使用して、リテラル文字列のデフォルトの照合をオーバーライドできます。照合を指定しない場合、リテラルにはデータベースのデフォルト照合が割り当てられます。 DATABASEPROPERTYEXを使用して、データベースの現在の照合を検索できます。

SELECTステートメントのORDER BY句で照合順序を指定することにより、サーバー、データベース、または列の照合順序をオーバーライドできます。

2
Satya SKJ