将用户添加到 System.Activities.DurableInstancing 角色

问题描述 投票:0回答:2

我们有很多客户使用 db_datawriter 和 db_datareader 角色连接到 sql server 到目前为止,我们还没有定义灵活的角色。

现在我们的软件使用了新的工作流基础持久存储。 为了像这里所描述的那样启用它,我们使用了SQL脚本SqlWorkflowInstanceStoreSchema.sql和SqlWorkflowInstanceStoreLogic.sql,它们创建了一个新的数据库模式

System.Activities.DurableInstancing
和3个新角色:

  • System.Activities.DurableInstancing.InstanceStoreObservers
  • System.Activities.DurableInstancing.InstanceStoreUsers
  • System.Activities.DurableInstancing.WorkflowActivationUsers

具有

db_datawriter
db_datawriter
角色的用户只会收到 SqlException:

对象“CreateLockOwner”的 EXECUTE 权限被拒绝, 数据库“mydatabase”,架构“System.Activities.DurableInstancing”。

发生在商店。执行,如果软件启动:

InstanceHandle handle = store.CreateInstanceHandle();
var createOwnerCommand = new CreateWorkflowOwnerCommand
{
    InstanceOwnerMetadata =
    {
        { XNWorkflowHostTypePropertyName, new InstanceValue(XNWorkflowHostTypeIdentifierName) }
    }
};
InstanceView view = store.Execute(handle, createOwnerCommand, TimeSpan.FromSeconds(30));

我已经尝试过这个:

EXEC sp_addrolemember @rolename = 'System.Activities.DurableInstancing.InstanceStoreObservers' , @membername ='db_datawriter';
EXEC sp_addrolemember @rolename = 'System.Activities.DurableInstancing.InstanceStoreUsers' , @membername ='db_datawriter';
EXEC sp_addrolemember @rolename = 'System.Activities.DurableInstancing.WorkflowActivationUsers', @membername ='db_datawriter';

出现错误消息:错误 15405:无法使用特殊主体“db_datawriter”。

问题:

我是否忽略了在不知道登录名等的情况下使用脚本向此角色授予权限的任何其他可能性?

.net sql-server workflow-foundation-4 workflow-foundation
2个回答
0
投票

通常,您不会授予用户对持久性存储的访问权限。
应用程序的用户通过工作流引擎使用持久性存储,并且引擎可以访问该存储。

是否有特定场景要求他们直接访问商店?


0
投票

我通过利用你的部分解决方案解决了与你类似的问题,做了这个小改变:

EXEC sp_addrolemember 'System.Activities.DurableInstancing.InstanceStoreObservers' ,'myUser'
EXEC sp_addrolemember 'System.Activities.DurableInstancing.InstanceStoreUsers' ,'myUser'
EXEC sp_addrolemember 'System.Activities.DurableInstancing.WorkflowActivationUsers' ,'myUser'
© www.soinside.com 2019 - 2024. All rights reserved.