【发布时间】:2017-11-03 13:54:12
【问题描述】:
我用 C# 编写了一个程序,使用 Microsoft Sync Framework 来同步两个 sql 数据库。成功配置服务器和客户端后, 我在启动同步的客户端上设置了以下权限:
GRANT VIEW CHANGE TRACKING ON OBJECT::dbo.My_Table to my_role
GRANT DELETE ON [dbo].[My_Table_tracking] TO [my_role] AS [dbo]
GRANT INSERT ON [dbo].[My_Table_tracking] TO [my_role] AS [dbo]
GRANT SELECT ON [dbo].[My_Table_tracking] TO [my_role] AS [dbo]
GRANT UPDATE ON [dbo].[My_Table_tracking] TO [my_role] AS [dbo]
GRANT DELETE ON [dbo].[scope_info] TO [my_role] AS [dbo]
GRANT INSERT ON [dbo].[scope_info] TO [my_role] AS [dbo]
GRANT SELECT ON [dbo].[scope_info] TO [my_role] AS [dbo]
GRANT UPDATE ON [dbo].[scope_info] TO [my_role] AS [dbo]
GRANT DELETE ON [dbo].[scope_config] TO [my_role] AS [dbo]
GRANT INSERT ON [dbo].[scope_config] TO [my_role] AS [dbo]
GRANT SELECT ON [dbo].[scope_config] TO [my_role] AS [dbo]
GRANT UPDATE ON [dbo].[scope_config] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_selectrow] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_update] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_updatemetadata] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_selectchanges] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_insertmetadata] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_insert] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_deletemetadata] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_delete] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_bulkupdate] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_bulkinsert] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_bulkdelete] TO [my_role] AS [dbo]
我使用以下资源将上面的脚本放在一起:
- Answer to Need to learn how to set appropriate permissions on SQL Server database to allow Synchronisation through Sync Framework 2.1
- Minimum Database Permissions Requirements for Microsoft Sync Framework
但是,当我运行程序时,会记录以下错误:
此 SqlParameterCollection 不包含具有 ParameterName '@changeTable' 的 SqlParameter
将执行查询的用户映射到内置的db_owner 角色后,程序可以完美运行。
有什么办法可以比较my_role和db_owner的有效权限吗?如何调试 sql server 的权限问题(ssms 中显示的 sql server 日志没有显示与我的问题相关的任何内容)?或者:使 Microsoft Sync Framework 将两个数据库与批量过程同步需要哪些确切的权限?
【问题讨论】:
标签: sql-server permissions synchronization microsoft-sync-framework