2010-09-08 128 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