免責事項:私はこの質問が以前に100回尋ねられたことを知っていますが、私が先に進み、それを行うために多くのコードを記述/ソースする前に見逃していた簡単な解決策がないかどうかを確認したかっただけです。
私たちのソフトウェアは、元々SQL Server 7用に設計されたデータベースを使用しているため、それを作成するすべてのスクリプトは、文字列に明示的な照合を指定していません。代わりに、データベースがSQL Server 2000以降に作成または復元されると、すべての列がデータベース照合を継承します(これSQL_Latin1_General_CP1_CI_AS
は、SQL Server 7のデフォルトだったためです)。
理論的には、これはそれほど重要ではありません。私たちのデータベースが顧客のサーバーでゼロから作成された場合、それは顧客のサーバーの照合順序(通常は最新のインストールのデフォルトLatin1_General_CP1_CI_AS
)を継承し、すべてが機能するためです。ただし、このシナリオは、データベースのバックアップを送信するか、データベースのバックアップを送信すると失敗し、コードが一時テーブルなどにアクセスしようとすると、恐ろしい照合不一致エラーが発生します。
SQL Serverインスタンスをインストールまたは再構築して、推奨される照合順序を使用するようにお客様に説明しましたが、もちろん、常にそうであるとは限らず、常に可能であるとは限りません。
新しいデータベースの作成とデータのコピーを含むソリューションは実際には実用的ではありません。ライブデータベースで手を振って、データを乱すことなくすべての列を修正できる「魔法の杖」が必要です。私はこれを行うユーティリティを書くことを考えていますが、それはかなり大きな仕事になるので、誰かより簡単な提案はありますか?