移动服务器后经典ASP站点投掷日期转换错误?

时间:2010-04-19 10:56:29

标签: sql sql-server database datetime asp-classic

我正在将一个旧商店从Win2003 IIS6服务器移动到Win2008 IIS7服务器,将所有内容移动到包括数据库。前端似乎工作得很好,但是当我登录时,它必须根据日期范围提取数据,现在我从哪里得到这个错误?

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value

为什么会在新服务器而不是旧服务器上执行此操作的任何想法?没有代码更改,DB是旧服务器的备份??

2 个答案:

答案 0 :(得分:1)

啊,我会说你有文化问题。可能你需要/等待特定形式的日期和字符串格式,并且当前过程中的编码是不同的;)你可能会调整旧服务器中的文化,而不是新服务器上的文化。

答案 1 :(得分:1)

从错误消息中,这里可能发生的是ASP应用程序正在向SQL服务器发送日期字符串,例如它正在使用Where子句构建查询:

WHERE SomeDateField > '20/04/2010'

...新平台上的一些不同区域设置阻止SQL解析日期字符串。通常,这归结为美国与英国的日期格式,将月份放在不同的地方。之一:

  • Windows中的区域设置不同,导致ASP以不同的方式构建日期字符串,或
  • SQL中的区域设置不同,导致SQL尝试以不同的方式解析日期字符串。

从我们下面的对话中,看起来它可能是SQL中的区域设置。

在SQL Server Standard中,通常有以下语言设置可以影响解析日期字符串的方式:

  • 服务器的整体语言设置
  • 服务器上定义的每个登录的语言设置(查看登录的“属性”对话框)

我很确定SQL Express也会有相同的设置。在两台服务器上启动“Microsoft SQL Server Management Studio Express”,并比较服务器和登录语言设置。