我在VB 6.0,AppOK和AppFailed上有两个应用程序。两者都与SQL Server上的数据库连接,用户AppUser并查询表。 AppOK成功,AppFailed失败并显示以下错误消息。
运行时错误' -2147217911(80040e09)':
对象' xxxxx',数据库上的SELECT权限被拒绝 ' xxxxx',架构' xxxxx'。
该表存在于AppUser的架构中,当我明确授予用户SELECT
权限时,
无法授予,拒绝或撤消sa,dbo,实体所有者的权限, information_schema,sys或者你自己。
AppFailed能够查询架构中的所有其他表,但在新创建的4个表上失败,而AppOK可以查询所有这些表。
两个应用程序的连接字符串完全相同。在与AppUser连接时通过Management Studio查询这4个新表可以正常工作。 AppUser没有DENY
权限。
我无法弄清楚问题。
答案 0 :(得分:0)
很明显,从AppFailed连接的用户角色存在一些差异。
使用SQL事件探查器跟踪两个应用程序的警告和错误。您在SQL Profiler中寻找的特定事件在此处描述: Exception Event
确保包含与用户登录相关的列,并查找两个应用的活动差异。
以下是使用SQL事件探查器跟踪错误的一些信息:https://nimblegecko.com/how-to-trace-sql-server-database-errors-and-exceptions-with-sql-profiler/
答案 1 :(得分:0)
尝试
1)dbaccess sysmaster 2)将syssqlstat上的select授予public;
答案 2 :(得分:0)
:(.。应用程序在建立连接后立即更改了用户本身的角色(我对此一无所知),该角色没有新创建表的权限。