いくつかの顧客サイトで問題なく機能する製品のインストールで問題が発生しました。この問題は、データベースサーバーの照合設定に関係していると思います。私はこのようなコードを持っています(コードはプロプライエタリであるため、テーブルと変数の名前を変更しました):
using (SqlCommand insertCommand = dbConnection.CreateCommand())
{
insertCommand.CommandText = "INSERT INTO [myTable] ([valueOne] ,[valueTwo] ,[CreationDate]) VALUES (@valueTwo ,@valueTwo ,@creationDate);select IDENT_CURRENT('myTable');";
insertCommand.Parameters.AddWithValue("@valueOne", "Value One");
insertCommand.Parameters.AddWithValue("@valueTwo", "Value Two");
insertCommand.Parameters.AddWithValue("@CreationDate", CreationDate);
dbConnection.Open();
object result = insertCommand.ExecuteScalar();
dbConnection.Close();
}
これはほとんどのサイトと開発およびQAマシンで機能しますが、この1つのサイトで、「スカラー変数 "@creationDate"を宣言する必要があります」というエラーが表示されます。主な不一致は、サイトの照合値がSQL_Latin1_General_CP1_CS_ASに設定されていることです。設定はすべてSQL_Latin1_General_CP1_CI_ASです。これをデータベース用に変更しましたが、サーバーでは大文字と小文字が区別されるバリエーションに設定されています。これにより、別のテーブルで発生していた別の問題が解決されました(1つはパラメーター名ではなくテーブル名でした) 、しかし、何らかの理由で、これにはまだ問題があります。コードベースの大文字と小文字の違いをすべて調べて修正するよりも、これを少し早く解決する方法について誰かがアイデアを持っていますか?
このサイトはSQLServer2005を使用しており、コードはC#および.NET3.5で記述されています。
ありがとう-ホリス