Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlDependency、最小数据库权限和角色拥有的架构 背景:_C#_Sql Server_Sql Server 2012_Sqldependency - Fatal编程技术网

C# SqlDependency、最小数据库权限和角色拥有的架构 背景:

C# SqlDependency、最小数据库权限和角色拥有的架构 背景:,c#,sql-server,sql-server-2012,sqldependency,C#,Sql Server,Sql Server 2012,Sqldependency,设置SqlDependency时,我使用了这些文章中的信息,以便为数据库用户提供所需的最低权限: 结果是这样的: 创建角色[sql\u dependency\u user]授权[dbo]; 授予合同上的参考:[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]到[sql_依赖项_用户]; --对于Start() 将创建过程授予[sql_dependency_user]; 将创建队列授予[sql_dep

设置
SqlDependency
时,我使用了这些文章中的信息,以便为数据库用户提供所需的最低权限:

结果是这样的:

创建角色[sql\u dependency\u user]授权[dbo];
授予合同上的参考:[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]到[sql_依赖项_用户];
--对于Start()
将创建过程授予[sql_dependency_user];
将创建队列授予[sql_dependency_user];
将创建服务授予[sql_dependency_user];
将视图定义授予[sql_dependency_user];
--订阅
将订阅查询通知授予[sql_dependency_user];
将QueryNotificationErrorsQueue上的接收授予[sql_dependency_user];
问题: 如果我创建此角色所拥有的架构,并将用户添加到此角色(如上所述):

SqlDependency.Start()
抛出错误:

找不到指定的用户“所有者”。
找不到队列“SqlQueryNotificationService-00000000-0000-0000-0000-000000000000”,因为它不存在或您没有权限。
对象名称“SqlQueryNotificationService-00000000-0000-0000-0000-000000000000”无效

但是,如果我将用户的
DEFAULT\u模式
设置为用户拥有的模式,那么它就会工作(当然)

问题:
  • 为什么在使用角色拥有的架构时会出现错误
  • 如果我想避免为每个用户创建模式,有哪些选项
  • 可能有用的信息:
    • 我正在使用SQL Server 2012

    • 我已经看过了,但是在模式上给用户
      ALTER
      和/或
      控件
      似乎不起作用

      • 回答你的问题:1)

        您需要为您的架构分配所有者。运行以下查询,它将解决您的问题:

        ALTER AUTHORIZATION ON DATABASE::MyDatabaseName TO NewOwner;
        GO
        
        就你而言:

        ALTER AUTHORIZATION ON SCHEMA::[sql_dependency] TO [sql_dependency_user];
        

        对于找到此Q的任何人,此DBAs Q可能有助于:
        ALTER AUTHORIZATION ON SCHEMA::[sql_dependency] TO [sql_dependency_user];