sql >> データベース >  >> RDS >> Sqlserver

照合の競合を解決できません

    照合については、データベースには独自の照合がありますが、すべてのテーブルとすべての列に独自の照合を設定できます。指定しない場合、親オブジェクトのデフォルトを使用しますが、異なる場合があります。

    データベースの照合を変更すると、すべての新しいテーブルと列の新しいデフォルトになりますが、データベース内の既存のオブジェクトの照合は変更されません。すべてのテーブルと列の照合を手動で変更する必要があります。

    幸いなことに、インターネット上にはその仕事をすることができるスクリプトがあります。私はそれらを試したことがないので、私はそれらを推薦するつもりはありませんが、ここにいくつかのリンクがあります:

    http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collat​​ion-of-all-Database

    データベース内のすべてのフィールドの照合をオンザフライで更新

    http://www.sqlservercentral.com/Forums/Topic820675-146-1.aspx

    2つのオブジェクトで異なる照合を行う必要がある場合、または照合を変更できない場合でも、JOINを実行できます。 COLLATEを使用してそれらの間 コマンドを実行し、参加する照合を選択します。

    SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE Latin1_General_CI_AS 
    

    またはデフォルトのデータベース照合を使用する:

    SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE DATABASE_DEFAULT
    



    1. ストアドプロシージャを実行する場合、CommandType.Textを使用するのと比較してCommandType.StoredProcedureを使用する利点は何ですか?

    2. 設計によるSQLデッドロックゼロ-コーディングパターンはありますか?

    3. ETLプロセスでのPythonとMySQLの使用:PythonとSQLAlchemyの使用

    4. SQLキーワードのように見えるSQL列名を処理するにはどうすればよいですか?