2009-05-05 14 views
0

ヒストリー: ストアドプロシージャを作成するスクリプトの実行に関連する夜間の展開がありました。ただし、スクリプトの実行中にDBの照合にエラーが発生しました。ライブデプロイ時のSql照合の問題

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

質問: フォワード、または私のオプションは何ですか?

環境:事前に SQL 2000

感謝。

答えて

0

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

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

-1

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

異なる照合順序の複数の本番データベースがある場合など、更新できない場合は、アップデートが失敗したり、正常に完了したりすることがあります。すべてのストアドプロシージャの更新をトランザクションに置き、drop/createではなくalterを使用してください。

0

  • は、すべてのCOLLATEが同じデシベルに一致していることを確認し、いくつかの解決策があります。そうでなければ痛みを感じるでしょう。
  • tempテーブルに多数のデータが含まれていない場合、destテーブルと同じ照合順序で再作成するのが適切です。
  • それはオプションではありません場合は、文字列型を探し、宛先DB 1

    INSERT INTO dest_db..DEST_TABLE (DEST_VARCHAR_COLUMN) 
    SELECT TMP_VARCHAR_COLUMN COLLATE <dest_db_collate> 
    FROM tmp_db..#TEMP_TABLE 
    
+0

あなたが正しいへのあなたの丁合いを強制する、私たちは同じ痛みをしたくありません!助けてくれてありがとう –