我正在尝试将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”感到满意。前缀丢失了,还是有其他我错过的东西?
[edit]使用Windows身份验证,并且作为故障排除步骤,Public和Guest角色已获得DB的完全权限。
答案 0 :(得分:5)
数据库登录是否有所不同? dbo“前缀”只是定义对象的模式。因此,如果您的ODBC连接器使用dbo凭据登录该对象应该是它的默认架构。
答案 1 :(得分:2)
首先必须使用ODBC吗?根据我的经验,“本机”(类型4)SQL Server驱动程序更好。有一个Microsoft driver和jTDS。我对MS驱动程序没有多少经验,但是jTDS很好。
当然,如果您被其他因素强行使用ODBC,这对您没有任何用处 - 但如果您有选择权,那么值得一试。在Windows机器上配置会少一点。