我遇到了一个问题,安装一个在几个客户站点上运行良好的产品时出现了问题,我认为这个问题与他们的数据库服务器上的排序设置有关。我的代码如下(因为代码是专有的,所以我改变了表和变量名称):
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机器,但在这个网站上,我们收到一个错误消息,说“必须声明标量变量@creationDate”。我看到的主要差异是该网站将排序规则设置为SQL_Latin1_General_CP1_CS_AS,而我们的设置都是SQL_Latin1_General_CP1_CI_AS。我已经为我们的数据库更改了这个设置,但服务器仍然设置为区分大小写的变体。这确实解决了我们在不同表格中遇到的另一个问题(那个问题是表格名,而不是参数名),但由于某种原因,对于这个问题仍然存在。是否有人有任何想法,能够比逐个修复我们代码库中所有不同大小写的问题更快地解决这个问题?
该网站正在使用SQL Server 2005,并且我们的代码是用C#和.NET 3.5编写的。
谢谢 -Hollis