我正在尝试使用Automatic Identity Range Management。但是,确保我的用户可以在带有标识列的表中插入记录的唯一方法是使它们成为db_owner
。我想念什么吗?
有关完整背景,请参阅我之前的问题:Allow non-db_owner INSERT permissions in merge replication with auto identity range mgmt
最佳答案
显然,它们是互斥的。
以下是Microsoft employee blog的摘录(请注意,这不是“官方”文档,但它与它的内容差不多):
常见身份范围问题
1)对发布者表或订阅表进行插入的帐户不是db_owner。
SQL 2005/8订阅服务器具有合并复制触发器,如果进行插入的帐户是db_owner角色的成员,则该合并复制触发器可以将耗尽的主范围调整为辅助辅助范围。如果连接的帐户是db_owner角色的成员,则发布者还可以刷新范围(创建新的主范围和辅助范围)。但是,如果插入表中的帐户不属于db_owner角色,则触发器无法进行此类调整。在这种情况下,必须执行合并代理才能在范围耗尽之前进行这些调整,以避免新插入失败,或者db_owner成员必须手动运行系统存储过程sp_adjustpublisheridentityrange(Transact-SQL)。
什么!?!?!谁在写唯一插入记录为db_owners的用户的数据库应用程序?
关于sql-server - 良好的安全做法和自动标识范围是否相互排斥?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6113915/