我试图通过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