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];