我試圖通過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?
謝謝!
我試圖通過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?
謝謝!
要清除問題:使用user
連接到SQL Server,而不是schema
。你不會說你要連接的是哪個版本的SQL Server,但過去的情況是兩者是等價的。截至2005+,that is no longer true。
dbo
是默認模式(將其視爲命名空間);什麼錯誤消息告訴你的是用戶您正在使用的連接(如果我理解正確的話,這是MYUSER)不從MyTable的表,這是DBO的部分有權SELECT
schema in the MyDatabase數據庫。
要做的第一件事是確認您連接的用戶是否對該表具有SELECT權限。第二件要做的事情是,如果它不給,MyUser的權限或使用不同的用戶來執行SELECT語句。
我發現你必須在你的POJOS定義中指定你的模式。
在我的情況下,我使用JPA(實體/註解)遇到同樣的麻煩,我意識到在@Table
註釋工作中指定模式屬性。
例如:
@Table(name = "address", **schema="*dbo*"**, catalog = "petcatalog")
我希望這可以幫助你。
Downvoting,因爲無論多少年後,在代碼(和目錄)中指定模式名稱是一個可怕的想法。當你改變使用不同的模式時會發生什麼? – 2015-09-29 11:07:57