ミックス伝統的なシンプルなデータは、SQL Serverの問題



データベース簡体字中国語および繁体字中国語バージョンを使用します会社。私はこのプロジェクトを使用するのSQLServerの繁体字中国語バージョンですが、別の用途のSQLServerプロジェクトデータの簡体字中国語版を使用する必要がある、私が使用されて繁体字中国語にデータテーブル内のSQLServerの簡体字中国語版の通常の練習を続けているSQLServerの、構造とデータの成功にのバージョン。私は始め、これが問題になることに気付かなかった。それから私は、SQLステートメントをデバッグするために始めた非常に単純な2つのテーブルのデータを選択に関連付けられては、次の:

Table1を選択.*、table2の.*

table1から

内部結合table2のtable2.FKに= table1.PK

うち何か問題の意味になる論理的に単純なステートメントが、クエリアナライザで、常に次のエラーを求める

サーバー:メッセージ446、レベル16、状態9、行1

均等アクションに照合の競合を解決することはできません。

今のところ次に検索し、T - SQLのヘルプを見たことが、唯一知っているので、繁体字中国語テーブルにSQL Serverテーブルのデータに私は簡体字中国語れるデータは、一緒に元のデータは、並べ替えと輸入は、データ並べ替えの簡単な形式で結果はまだ簡素化されますので、私はエラーに比較することはできません。解決策は、名前で並べ替えるには、どのようにクエリアナライザを並べ替えることができます語られている。ここではCOLLATEをColiateのSQLServer Books Onlineのキーワードを使用する必要がなるの説明があります:

COLLATEを

句は、データベース定義または列定義に並べ替え規則、または照合文字列式の投影を適用するために使用定義に適用することができます。

構文:

COLLATEを照合順序名

照合順序名 ::=

(Windows_collation_name)|(SQL_collation_name)

パラメーター

collation_nameに

式の中で使用され、列の定義またはデータベースの照合順序名の定義。 collation_nameにのみWindows_collation_nameまたはSQL_collation_nameを指定できます。

Windows_collation_name

Windows照合順序は、照合順序名です。 Windows照合順序名を参照してください。

SQL_collation_name

SQL照合順序は、照合順序名です。 SQL照合順序名を参照してください。

では、どのようは、現在の照合順序の名前を知ることができるか、実際には、照合順序の名前は、我々は、あなたが時間を選ぶことができるデータベース(インスタンス)を作成する通常我々は、元のデフォルトではなく、設定されますですその変化、SQLServerの簡体字中国語簡体字中国語、および場合のSQLServerは、繁体字中国語簡体字中国語は、既定の照合順序を使用する、デフォルトの並べ替え規則を使用するようにします。我々は、データベース(インスタンス)のプロパティで見ると、一番下の行の[全般]タブは、現在の照合順序。デフォルトの場合には、簡体字中国語照合順序名は:Chinese_PRC_CI_AS、および繁体字中国語照合順序名は:Chinese_Taiwan_Stroke_CI_ASがので、私たちは場合簡略化して、使用するかについてのステートメントとして時間の伝統的なミックスの照合順序名限り、現在の並べ替え規則の種類は、例えば、上記のSQLステートメントは、次の2つの方法は、問題を解決する比較することができるエラー

Table1を選択.*、Table2の.*

FROMテーブル

入れ子=はTable1.PK COLLATEをChinese_PRC_CI_AS Table2.FK ONにTable2ののJOIN

Table1を選択.*、Table2の.*

FROMテーブル

入れ子=はTable1.PK COLLATEをChinese_Taiwan_Stroke_CI_AS Table2.FK ONにTable2ののJOIN

それは長い時間が問題を照合競合が原因で解決するためには、興味がある場合は、『SQL Server Booksオンラインが並べ替え規則の概念は、あなたと共有する投稿された以下の、私たちを保存し、してください:

マイクロソフトでは?SQL Serverの?2000は、複数の照合順序をサポートします。並べ替えのルールは)マケドニアやポーランドなどの言語の適切な使用を(コントロールしたり、西ヨーロッパ言語などのアルファベット()は文字エンコーディングルールをラテンアルファベットLatin1_Generalを使用します。

各SQL Serverの照合順序は3つのプロパティを指定します:

Unicodeデータ型(nchar型、nvarchar型、およびntext)のソート順序でください。並べ替え順序は、比較演算文字にメソッドの値の文字の並べ替え順序を定義します。

Unicode以外の文字データ型(varchar型char型、およびテキスト)の並べ替え順序のために。

コードページの非Unicode文字データを格納するために使用されます。

ヘルプは、Unicodeデータ型(nchar、nvarchar型、およびntext)に対応するコードページを指定することはできません。 Unicode標準でダブルバイトのUnicode文字およびビットパターンを定義して変更することができます。

SQL Server 2000の照合順序の任意のレベルで指定できます。インストールは、SQL Server 2000のインスタンスは、インスタンスの既定の照合順序を指定できます。するたびにデータベースを作成すると、データベースの既定の照合順序に割り当てることができます。あなたは、データベースインスタンスの既定の照合順序の照合順序を指定しない場合は、デフォルトの照合順序です。文字列、変数またはパラメータの定義は、これらのオブジェクトの照合順序を指定することができますたび。照合順序が指定されていない場合、これらのオブジェクトを作成するデフォルトのデータベースの照合順序を使用します。

SQL Serverのインスタンスがすべてのユーザーが同じ言語を使用する場合、言語は、照合順序をサポートするように選択する必要があります。すべてのユーザーが、フランス語、たとえば、フランス語の照合順序を選択します。

SQL Serverのインスタンスのユーザの言語は、多言語のニーズに照合のために最高のサポートを提供するために選択する必要がある場合。たとえば、ユーザーは一般的に、選択Latin1_General照合順序を西ヨーロッパ言語を話す場合。時多言語ユーザーのサポートは、すべての文字データnchar型、nvarchar型のUnicodeデータ型を使用して、およびntextが最も重要です。 Unicodeは、非Unicodeのchar、varchar、テキストデータ型のコードページ変換の難しさを排除することを目指します。比較のために照合順序は、操作の順序とUnicode文字の並べ替え順序の定義なので、Unicodeデータ型を使用してすべての列を達成するためにため、並べ替え、別のルールになります。場合でも使用してUnicodeデータ型は文字データを格納する、ほとんどのユーザーは、照合順序をサポートするために、非Unicodeデータ型の列または変数の使用を達成するために防止するために選択する必要があります。

照合順序のSQL Serverデータベースエンジンは、格納するために動作し、文字とUnicodeデータの定義を。ただし、データがアプリケーションに並べ替えと文字をWindowsの地域設定のコンピュータ制御によって選択された比較するためのアプリケーションに移った。アプリケーションの項目のWindowsの[地域の設定コントロールのいずれかの文字データの照合順序を使用して、地域の設定は、時間などのデジタルとして、日付と通貨の形式その他の項目を定義します。 Microsoft Windows NTの?4.0は、Microsoft Windows?98およびMicrosoft Windows 95、コントロールパネルを"地域設定"アプリケーションは、Windowsの地域設定を指定できます。 Microsoft Windows 2000を使用する場合"コントロールパネル""地域のオプション"アプリケーションのロケールを指定します。詳細については、Windowsの地域設定は、MicrosoftのWebサイトのMSDNを参照してくださいページは、Windows 95およびWindows NT 4.0のための国際ソフトウェアを開発?してください。

数は、データの非Unicode照合順序の同じコードページを使用することができます。たとえば、コードページは1251はキリル文字セットを定義します。 Cyrillic_General、ウクライナ語、マケドニアなどの複数の並べ替え規則は、()のコードページを使用します。これらのルールはビットセットと同じ種類の非Unicode文字データを表現するために、しかし、辞書の定義は、ソートおよび比較の規則を扱っているが、若干異なると、辞書の定義を適用する言語またはアルファベットの並べ替え規則を正しい文字に関連付けられて決定するシーケンス。

SQL Server 2000のUnicode照合順序のコントロールは、非Unicodeの並べ替え順序は、Unicodeに、別の照合順序を指定非Unicodeデータが発生しないようにするため、問題が発生します。コードページ番号、並べ替え順序とUnicode文字の照合順序は別に指定されたSQL Serverの以前のバージョンでは。 SQL Serverの以前のバージョンでは、各コードページの並べ替え順序の異なる数をサポートし、いくつかのコードページ用のWindowsは、並べ替え順序は、地域設定を提供します。 SQL Server 7.0では、また、非Unicodeの並べ替え順序のUnicodeの並べ替え順序以外のデータの選択を指定できます。これは、使用と非Unicodeデータの相対Unicodeデータは、ソートと比較操作で異なる結果を返すことになります。