2009-05-26 177 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