低权限用户执行存储过程时的表权限

Vac*_*ano 2 sql-server database-permissions sql-server-2008 sql-server-2008-r2

我有一个client.UpdateClient由 SQL 用户(称为MyWCFServicesUser.

MyWCFServicesUser具有数据库的数据读取者和数据写入者权限。它还具有存储过程的执行权限(但没有其他权限)。

client.Client存储过程将在with中插入一行SET IDENITY_INSERT client.Client ON。

当我运行带有集成安全性的存储过程(来自 SSMS)时(我是sa),一切正常。

MyWCFServicesUser当我(从 SSMS)运行它时,它失败并出现以下错误:

消息 1088,级别 16,状态 11,过程 UpdateClient,第 33 行
找不到对象“client.Client”,因为它不存在或您没有权限。

我通常将所有存储过程和表都放在默认 (dbo) 模式中,但这次我尝试不使用 dbo。

这就是我没有权限的原因吗?我需要以某种方式提升存储过程吗?还是用户?或者以某种方式改变架构?

我很困惑...

Vac*_*ano 5

事实证明 SET IDENTITY_INSERT 需要用户更改权限。