web-dev-qa-db-ja.com

SQL Server 2012の照合コード(空白、90、100、110)の意味は何ですか

SQL Server 2012のインストール中に、[照合順序]タブでFrench_CI_ASFrench_100_CI_ASのどちらかを選択できます。

それらは何を意味し、どちらが新しいですか?コードがない場合、それは100より新しいですか、それとも古いですか?

7
Alexandre Jobin

コードのないものは、バージョン90(SQL Server 2005)照合で、以前のバージョンのWindows/SQL Serverで使用されていました。 100を含む照合順序の方が新しい(SQL Server 2008)。

SQL Server 2008のドキュメント、ここ の違いの概要は少しありますが、詳細については説明しません。

新しいアプリケーションを開発している場合、100バージョンでは、ソートが(特に異常な文字に対して)やや論理的になることがあります。ただし、French_CI_ASで実行されている他のSQL Serverがある場合は、それらと一貫性を保つことをお勧めします。

11
Nathan Jolly

SQLサーバーは、照合順序をバージョン管理する必要があります。照合順序はデータベースに保持されるデータのソート順を決定するため、リリース間で照合順序が安定していることを保証する必要があります。それ以外の場合、Windowsの新しいリリースでの照合順序の変更(たとえば、照合順序のバグの修正)により、データベースの2つの行で、リリースの前後で異なる並べ替えが行われます。これは些細なことのように聞こえるかもしれませんが、実際にはインデックスの破損であることを意味します。これは、項目がA> B(新しい固定された照合規則に従って)としてソートされる必要があるため、データベースではBとして存在するためです。 > A(古い、バグのある、照合規則による)。したがって、SQL Serverは各リリースでWindows照合順序をスナップショットし、リリースバージョン番号を照合順序名に含める必要があります(名前には明示的なバージョン管理スキームがないため)。

選択する照合は、多くの要因の影響を受けます。古いサーバーとやり取りしてデータを交換する場合、使用する最新の照合がサーバーにない可能性があることを考慮してください。

6
Remus Rusanu