Java/MSSQL:Java.sql.SQLException无效的对象名';表名';

Java/MSSQL:Java.sql.SQLException无效的对象名';表名';,java,sql-server,sql-server-2005,tomcat,Java,Sql Server,Sql Server 2005,Tomcat,我正在尝试将java应用程序从旧服务器移动到新服务器。该应用程序在Tomcat上运行,使用Microsoft SQL Server作为后端数据库,并使用数据源(ODBC)中定义的系统DSN来决定连接到何处。旧服务器使用Windows 2000/SQL server 2000,新服务器使用Windows 2003/SQL server 2005 服务器之间的ODBC定义相同,并定义要使用的数据库 在新服务器上,当用户尝试登录时,stdout.log中将显示以下内容: 正在检查用户 错误:java.

我正在尝试将java应用程序从旧服务器移动到新服务器。该应用程序在Tomcat上运行,使用Microsoft SQL Server作为后端数据库,并使用数据源(ODBC)中定义的系统DSN来决定连接到何处。旧服务器使用Windows 2000/SQL server 2000,新服务器使用Windows 2003/SQL server 2005

服务器之间的ODBC定义相同,并定义要使用的数据库

在新服务器上,当用户尝试登录时,stdout.log中将显示以下内容:

正在检查用户 错误:java.sql.SQLException:[Microsoft][ODBC sql Server驱动程序][sql Server]无效的对象名“UserTable”。

数据库中确实存在一个名为UserTable的表,但通过管理界面显示为“dbo.UserTable

MSSQL中是否有我应该调整的设置,以使其对“dbo.”前缀丢失感到满意,或者是否有我遗漏的其他内容


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

您必须首先使用ODBC吗?根据我的经验,“本机”(类型4)SQL Server驱动程序更好。有一个和。我对MS驱动程序没有太多经验,但jTDS驱动程序很好


当然,如果您因其他因素而被迫使用ODBC,这对您没有任何用处——但如果您有选择权,那么值得一试。在Windows框上配置会少一件事。

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

我更希望不必对应用程序进行任何重新编码-这是一个旧的遗留工具,在当前服务器上使用ODBC可以正常工作,因此很难证明需要时间重做DB代码,尤其是因为参与它的创作的每个人都早已离开了,所以我们需要花很多时间来弄清楚他们做了什么。从头开始重做整件事会是一个更好的选择,但看起来不会发生-(为sa帐户设置defaut DB修复了这一问题,尽管sa帐户未被用于登录(应用程序无法知道sa凭据),但这是一个可接受的解决方案,因为这是一个独立的系统,并且此应用程序是DB将托管的所有应用程序。