代码之家  ›  专栏  ›  技术社区  ›  bjan

对用户自己架构的表的SELECT权限被拒绝

  •  1
  • bjan  · 技术社区  · 7 年前

    我在VB 6.0上有两个应用程序,AppOK和AppFailed。两者都使用用户AppUser连接SQL Server上的数据库并查询表。AppOK成功,AppFailed失败,错误消息如下。

    运行时错误“-2147217911(80040e09)”:

    数据库对象“xxxxx”的选择权限被拒绝 “xxxxx”,架构“xxxxx”。

    当我授予 SELECT 对用户的权限明确表示

    无法向sa、dbo、实体所有者授予、拒绝或吊销权限, information\u schema、sys或您自己。

    AppFailed能够查询架构中的所有其他表,但在新创建的4个表上失败,而AppOK可以查询所有这些表。

    两个应用程序的连接字符串完全相同。在与AppUser连接时,通过Management Studio查询这4个新表可以正常工作。AppUser没有任何 DENY 准许

    我想不出这个问题。

    3 回复  |  直到 7 年前
        1
  •  0
  •   RnP    7 年前

    很明显,从AppFailed连接的用户角色有一些不同。

    使用SQL探查器跟踪两个应用程序中的警告和错误。下面描述了您在SQL Profiler中查找的特定事件: Exception Event

    确保包含与用户登录相关的列,并查找两个应用程序的活动差异。

    以下是有关使用SQL Profiler跟踪错误的一些信息: https://nimblegecko.com/how-to-trace-sql-server-database-errors-and-exceptions-with-sql-profiler/

        2
  •  0
  •   HOUDA CHAKRANI    6 年前

    试试这个

    1) dbaccess系统管理员 2) 将syssqlstat上的select授予public;

        3
  •  0
  •   bjan    6 年前

    :(.应用程序在建立连接后立即更改了用户本身的角色(我不知道这一点),该角色对新创建的表没有权限。