2010-04-19 41 views
1

我正在將一箇舊存儲從Win2003 IIS6服務器移動到Win2008 IIS7服務器,並將所有內容都移動到包括數據庫在內。前端似乎工作得很好,但是當我登錄時,必須根據日期範圍提取數據,現在從沒有發生這種錯誤的地方開始。移動服務器後傳統的ASP網站拋出日期轉換錯誤?

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

任何想法爲什麼這會在新的服務器上做到這一點,而不是在舊的?沒有代碼已經改變,數據庫是舊服務器的備份?

回答

1

啊,我會說你有一個文化問題。可能你需要/等待日期和字符串格式的特定形式,並且當前過程中的編碼是不同的;)你可能需要調整舊服務器中的文化,而不是新文件。

+0

請參閱下面:) – leen3o 2010-04-20 05:08:57

1

從錯誤消息中可能會發生什麼是ASP應用程序正在將日期字符串發送到SQL服務器,例如,它是建設有Where子句這樣的疑問:

WHERE SomeDateField > '20/04/2010' 

...並在新平臺上的一些不同的區域設置防止SQL從解析日期字符串。通常,這歸結於美國和英國的日期格式,將月份放在不同的地方。或者:

  • 在Windows中的區域設置不同,造成ASP構建日期字符串以不同的方式,或
  • 在SQL區域設置不同,導致SQL試圖解析日期 - 字符串以不同的方式。

從我們下面的對話中,它看起來可能是SQL中的區域設置。

在SQL Server標準,一般有以下幾種語言設置會影響日期字符串如何解析:

  • 定義的語言設置爲每個登錄的服務器
  • 的整體語言設置服務器(看登錄屬性對話框)

我很確定SQL Express也會有相同的設置。在兩臺服務器上啓動「Microsoft SQL Server Management Studio Express」並比較服務器和登錄語言設置。

+0

是的都設置爲英國?這就是爲什麼我有點困惑: – leen3o 2010-04-19 12:53:47

+0

你是否移動了數據庫服務器?如果是這樣,你使用的數據庫是什麼類型/版本?可能還有區域設置可能會導致這種情況 – codeulike 2010-04-19 13:01:19

+0

我已經從SQL2005 Express to SQL2008 Express?SQL中是否存在區域設置? – leen3o 2010-04-20 05:09:49

相關問題