我正在尝试使用Automatic Identity Range Management。但是,确保我的用户可以在具有标识列的表中INSERT记录的唯一方法是使它们db_owner
。我错过了什么吗?
有关完整背景,请参阅我之前的问题: Allow non-db_owner INSERT permissions in merge replication with auto identity range mgmt
答案 0 :(得分:3)
显然他们是相互排斥的。
以下是Microsoft employee blog的摘录(注意,这不是“官方”文档,但它的内容尽可能接近):
常见的身份范围问题
1)对发布者或订阅表进行插入的帐户不是db_owner。
SQL 2005/8订阅者具有合并复制触发器,如果创建插入的帐户是db_owner角色的成员,则可以将耗尽的主要范围调整到辅助辅助范围。如果连接的帐户是db_owner角色的成员,则发布者还可以刷新范围(创建新的主要和辅助范围)。但是,如果在表中插入的帐户不属于db_owner角色,则触发器无法进行此类调整。在这种情况下,合并代理需要执行才能在范围耗尽之前进行这些调整,以避免新插入失败,或者db_owner的成员必须手动运行系统存储过程sp_adjustpublisheridentityrange(Transact-SQL)。
什么!?!?!谁在那里编写数据库应用程序,其中唯一插入记录的用户是db_owners?