【问题标题】:JDBC Change Default SchemaJDBC 更改默认架构
【发布时间】:2011-04-09 19:41:43
【问题描述】:

我正在尝试通过 JDBC 连接到 sql server 2005 数据库。

我得到错误:

com.microsoft.sqlserver.jdbc.SQLServerException: SELECT 权限 在对象“MyTable”、数据库“MyDatabase”、架构上被拒绝 'dbo'。

我用来连接的架构是“MyUser”。我如何使用 MyUser 而不是 dbo 进行连接?

谢谢!

【问题讨论】:

    标签: java sql-server jdbc schema


    【解决方案1】:

    澄清一下:您使用user 连接到SQL Server,而不是schema。你没有说你连接的是什么版本的 SQL Server,但过去两者是等价的。截至 2005 年以上,that is no longer true

    dbo 是默认模式(将其视为命名空间);错误消息告诉您的是您正在连接的 user(如果我理解正确,那就是 MyUser)没有来自 SELECT 权限MyTable 表,它是 MyDatabase 数据库中dbo 架构一部分

    首先要做的是确认与您连接的用户是否对该表具有 SELECT 权限。第二件事是,如果没有,要么授予 MyUser 该权限,要么使用其他用户执行 SELECT 语句。

    【讨论】:

      【解决方案2】:

      我发现您必须在 POJOS 定义中指定架构。

      在我的例子中,我在使用 JPA(实体/注释)时遇到了同样的问题,我意识到在 @Table 注释中指定架构属性是有效的。

      例如:

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

      希望对你有帮助。

      【讨论】:

      • 投反对票,因为无论多少年后,在代码(和目录)中指定模式名称都是一个糟糕的主意。当您更改为使用不同的架构时会发生什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 2013-06-28
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 2013-03-30
      • 2023-03-16
      相关资源
      最近更新 更多