2009-05-26 175 views
4

我试图将Java应用程序从旧服务器移动到新服务器。该应用程序在Tomcat上运行,使用Microsoft SQL Server作为后端数据库,并使用数据源(ODBC)中定义的系统DSN来决定连接的位置。使用了Windows 2000/SQL Server 2000的旧服务器,新服务器使用Windows 2003/SQL Server 2005的Java/MSSQL:java.sql.SQLException无效的对象名称'TableName'

的ODBC定义服务器之间是相同的,并且定义了DB使用。

在当用户试图登录的stdout.log以下出现的新服务器:

用户正在检查 错误:值java.sql.SQLException:[微软] [ODBC SQL Server驱动程序] [SQL Server]无效的对象名称'UserTable'。

的表称为用户表在数据库中确实存在,但显示为“dbo.USerTable”通过管理界面。

是否有MSSQL的地方设置我应该调整,使其满意的“DBO”。前缀丢失,还是有其他我错过了?

[编辑]使用Windows身份验证,以及公共和来宾的角色都被赋予完全权限DB作为一个故障排除步骤。

回答

5

数据库登录不同吗? dbo“前缀”只是该对象在其下定义的模式。因此,如果您的ODBC连接器使用dbo凭证登录,那么该对象应该位于其默认模式中。

+0

设置固定该sa帐户的defaut DB,即使是不使用sa帐户登录(和应用程序无法知道SA证书的方式) 奇怪,但一个可接受的解决方法给出这是一个独立的系统,这个应用程序是所有数据库都会托管的。 – DrStalker 2009-05-26 23:58:34

2

您是否必须首先使用ODBC?根据我的经验,“本地”(类型4)SQL Server驱动程序更好。有Microsoft driverjTDS。我没有太多的MS驱动程序经验,但是jTDS很好。

当然,如果你不得不受到其他因素的使用ODBC,这将不会是任何使用你 - 但如果你有选择,这将是值得一试。这将是一个更少的事情来配置在Windows中。

+0

我宁愿没有做应用程序的任何重新编码 - 这是一个古老的传统工具,并且工作正常使用ODBC当前服务器上,所以很难证明时间重做DB代码,尤其是涉及每个人的创造早已不复存在,所以我们需要花费大量的时间来弄清楚他们做了什么。 重做整个事情从头开始将是一个更好的选择,但它看起来不会发生。 :-( – DrStalker 2009-05-26 09:02:06