SqlTableDependency权限问题

时间:2016-11-28 22:07:45

标签: c# sql-server sql-server-2008 permissions

我正在尝试在C#.Net应用程序中使用SqlTableDependency类,但我无法为自己授予所需的数据库权限。具体来说,我需要权限:

  • ALTER
  • CONTROL
  • 创建合同
  • 创建消息类型
  • 创建程序
  • CREATE QUEUE
  • 创建服务
  • EXECUTE
  • 选择
  • 订阅查询通知
  • 查看数据库状态
  • 查看定义
  • CONNECT

错误消息指出:

  

“未处理的类型异常   'TableDependency.SqlClient.Exceptions.UserWithNoPermissionException'   发生在TableDependency.SqlClient.dll中。附加信息:   没有CREATE MESSAGE TYPE权限的用户“

我尝试使用此查询授予自己权限:

GRANT CREATE MESSAGE TYPE TO dbo

但是我收到了这个错误:

  

“无法授予,拒绝或撤销sa,dbo,实体所有者的权限,   information_schema,sys或者你自己。“

我已确认dbo是我数据库的所有者。

我正在运行Sql Server 2008 R2。

如何授予自己对服务器的权限?

3 个答案:

答案 0 :(得分:2)

您在连接字符串中使用的任何凭据都需要是数据库的db_owner。我将该用户设为db_owner,它对我有用。

答案 1 :(得分:1)

我的问题也是。

当将SqlTableDependency verson从4.6.7.8降级到4.6.7时,我的代码运行良好:)

答案 2 :(得分:0)

请确保执行以下操作:

启用经纪人

ALTER DATABASE Your_db_name SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Go

添加到db_owner

ALTER ROLE db_owner ADD MEMBER Your_user_db_name
GO

设置授权

ALTER AUTHORIZATION ON DATABASE::Your_db_name TO Your_user_db_name;

我希望有帮助。