0

履歴: 先日、ストアド プロシージャを作成するスクリプトを実行するデプロイがありました。ただし、スクリプトを実行すると、DB の照合に関してエラーが発生しました。

問題: 私たちの友人である Google の助けを借りて、私が抱えていた問題は、私たちのライブ環境のデータベースには 1 つの照合があり、一時 DB の照合が異なり、挿入しようとしたときにエラーが発生したためであることがわかりました。変数テーブルに。

質問: 最善の方法、または選択肢は何ですか?

環境: SQL 2000

前もって感謝します。

4

3 に答える 3

0

開発および本番データベースに関連して、統合テストに使用する一時データベースでこれに遭遇しました。私たちが行ったことは、すべてのデータベースが同じ照合順序を使用していることを確認することです。あなたの場合、スクリプト ファイルで単純な検索/置換を実行し、照合順序をターゲット データベースで使用されている照合順序に変更するだけでよいはずです。

編集:スクリプトを変更すると、今すぐ先に進むことができます。長期的には、関連するすべてのデータベースで同じ照合順序を使用するようにする必要があります。

于 2009-05-05T08:33:44.633 に答える
0

いくつかの解決策があります

  • すべての照合が同じデータベースで一致していることを確認してください。そうしないと、多少の痛みが伴います。
  • 一時テーブルに多くのデータが含まれていない場合に行うべき正しいことは、dest テーブルと同じ照合順序でそれらを再作成することです。
  • それができない場合は、文字列型を探して、照合を目的のデータベースに強制します

     INSERT INTO dest_db..DEST_TABLE ( DEST_VARCHAR_COLUMN )
     SELECT TMP_VARCHAR_COLUMN COLLATE <dest_db_collate>
     FROM tmp_db..#TEMP_TABLE
    
于 2009-05-05T08:34:12.247 に答える
-1

明らかな解決策は、運用データベースと同じ照合順序で開発データベースを再インストールすることです。

それができない場合 (たとえば、照合順序が異なる複数の運用データベースがある場合)、更新が全体として失敗または成功することを確認できます。すべてのストアド プロシージャの更新にトランザクションを配置し、必ずドロップ/作成ではなく変更を使用してください。

于 2009-05-05T08:19:47.477 に答える