我使用的是sql server 2008 r2。
这是我的代码
GRANT RECEIVE ON dbo.tranferToSIP TO UserName
我收到此错误消息:
Granted or revoked privilege RECEIVE is not compatible with object.
答案 0 :(得分:0)
尝试一次
Grant select
ON dbo.tranferToSIP
TO UserName
答案 1 :(得分:0)
我不认为' RECEIVE'是表的有效权限。所有的评论和教程都说它是,但它似乎与QUEUEs而不是TABLEs一起使用。 documentation表明它期望一个QUEUE而不是一个表,并且尝试从表中RECEIVE会出错:
CREATE QUEUE SampleQueue;
RECEIVE * FROM SampleQueue -- works
CREATE TABLE SampleTable (ID int identity(1, 1), Name varchar(80));
RECEIVE * FROM SampleTable -- Invalid object name 'SampleTable'.
SqlDependency创建自己的队列并运行示例而不授予我的RECEIVE或SEND权限(我也必须更改它以便启用添加消息按钮)。我不知道你对SqlDependency创建的队列的权限如何,因为它的名称类似于' SqlQueryNotificationService-d6e60909-be13-4f9c-bb01-59efb5d1a99b'。它还会自动创建存储过程和服务。
select * from sys.service_queues where name like 'SqlQuery%'
select * from sys.services where name like 'SqlQuery%'
select * from sys.procedures where name like 'SqlQuery%'
如果你想看,我在github上创建了一个simple console project。所有你必须拥有的是运行的本地sql服务器(表示很好),它将在其上创建一个Test数据库,ENABLE_BROKER,创建一个Messages表并使用SqlDependency进行查询,该查询将重新查询并显示前5条消息添加一个(从程序中或通过在查询分析器中手动执行)
答案 2 :(得分:0)
我创建了角色来执行存储过程,并尝试向表授予执行权限。检查表是否需要执行权限。就我而言,不需要为表授予权限,也不执行表。 :)