2010-09-08 111 views
0

我試圖通過JDBC連接到sql server 2005數據庫。JDBC更改默認架構

我得到的錯誤:

com.microsoft.sqlserver.jdbc.SQLServerException: The SELECT permission was denied on the object 'MyTable', database 'MyDatabase', schema 'dbo'.

我用來連接的模式是 「MYUSER」。如何連接使用MyUser而不是dbo?

謝謝!

回答

1

要清除問題:使用user連接到SQL Server,而不是schema。你不會說你要連接的是哪個版本的SQL Server,但過去的情況是兩者是等價的。截至2005+,that is no longer true

dbo是默認模式(將其視爲命名空間);什麼錯誤消息告訴你的是用戶您正在使用的連接(如果我理解正確的話,這是MYUSER)不從MyTable的表,這是DBO部分有權SELECT schema in the MyDatabase數據庫。

要做的第一件事是確認您連接的用戶是否對該表具有SELECT權限。第二件要做的事情是,如果它不給,MyUser的權限或使用不同的用戶來執行SELECT語句。

-1

我發現你必須在你的POJOS定義中指定你的模式。

在我的情況下,我使用JPA(實體/註解)遇到同樣的麻煩,我意識到在@Table註釋工作中指定模式屬性。

例如:

@Table(name = "address", **schema="*dbo*"**, catalog = "petcatalog") 

我希望這可以幫助你。

+0

Downvoting,因爲無論多少年後,在代碼(和目錄)中指定模式名稱是一個可怕的想法。當你改變使用不同的模式時會發生什麼? – 2015-09-29 11:07:57