4

我最近将一个经典的 ASP 网站转移到了一个新的服务器上。服务器运行IIS7.5。该站点通过 ODBC 连接到 MS SQL 数据库。它的应用程序池在NETWORK SERVICE.

在这个企业规模的网站上散布datetime着在旧服务器上运行良好的输入字段,但现在它们都有以下错误:

[Microsoft][SQL Server Native Client 10.0][SQL Server]将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

它期待错误的datetime格式。代码中使用的格式是一致的yyyy/MM/dd。当我在表单字段中交换月份和日期位置时,它可以工作。即yyyy/dd/MM(这很奇怪)。

Windows 控制面板、IIS 全球化和NETWORK SERVICE用户的注册表项都设置为 en-GB!

我已经测试了一直到调用数据库的代码,并且输入看起来不错。然后,我还复制了该 sql 并在我自己的登录名下通过 SQL Server Management Studio 运行它,这也可以正常工作。只有通过网站运行(NETWORK SERVICE通过 ODBC 连接)才会失败。

任何帮助是极大的赞赏。

4

4 回答 4

2

在 Web 服务器上的 ODBC 数据源中,将数据源设置为“输出货币数字和日期时使用区域设置”...

所以,

Control Panel\All Control Panel Items\Administrative Tools\Data Sources (ODBC)
Double click your data source
Click Next
Enter a valid db user / password, click next
Select the default DB, then next
Make sure the box as described above is CHECKED, then finish.
于 2013-01-09T00:04:23.277 回答
2

您可以检查和更改 NETWORK SERVICE 用户登录的默认语言。

在 MS SQL Management Studio 中,在对象资源管理器中搜索 Security/Login/ 和您的帐户名。在上下文菜单中有属性条目。然后检查默认语言。

于 2013-01-08T21:02:26.937 回答
2

在 IIS 上,在 Web 应用程序的应用程序池中 -> 高级设置 ->

加载用户配置文件选项设置为TRUE。这将强制设置为您的池用户“采用”。

于 2013-01-09T13:34:03.313 回答
1

您可以更改 IIS 6 的AspLCID 元数据库属性,或 IIS 7+ 的 LCID 属性:ASP 属性。这是默认使用的。

于 2013-01-08T21:19:59.333 回答