【问题标题】:Classic ASP Site Throwing Date Conversion Error After Moving Servers?移动服务器后经典 ASP 站点抛出日期转换错误?
【发布时间】:2010-04-19 10:56:28
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      从错误消息来看,这里可能发生的是 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”并比较服务器和登录语言设置。

      【讨论】:

      • 是的,两者都设置为英国?这就是为什么我有点困惑:(
      • 您是否也移动了数据库服务器?如果是这样,您使用的是什么类型/版本的数据库?那里也可能存在可能导致这种情况的区域设置。
      • 我已经从 SQL2005 Express 迁移到 SQL2008 Express? SQL中有区域设置吗?
      • 请发布吹的SQL Statement ;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2013-02-09
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      相关资源
      最近更新 更多