我最近把一个经典的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管理工作室运行它,这也很好。只有在NETWORK SERVICE
下通过ODBC连接运行时才会失败。
您可以检查和更改NETWORK SERVICE用户登录的默认语言。
在MS SQL Management Studio中,在对象资源管理器中搜索安全/登录/和您的帐户名称。在上下文菜单中有一个Properties条目。然后检查默认语言
在web服务器上的ODBC数据源中,将数据源设置为"在输出货币数字和日期时使用区域设置"…
Control PanelAll Control Panel ItemsAdministrative ToolsData 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.
在IIS上,在web应用程序池中->高级设置->
设置Load User Profile选项为TRUE。这将强制为您的池用户"采用"设置。
您可以更改IIS 6的AspLCID元数据库属性,或IIS 7+的LCID属性:ASP属性。