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

时间:2014-10-17 10:20:36

标签: .net sql-server workflow-foundation-4 workflow-foundation

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

现在我们的软件新使用了worklfow foundataion持久性存储。 为了像here所描述的那样启用它,我们使用了SQL脚本SqlWorkflowInstanceStoreSchema.sql和SqlWorkflowInstanceStoreLogic.sql,它们创建了一个新的数据库模式System.Activities.DurableInstancing和3个新角色:

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

具有db_datawriterdb_datawriter角色的用户只能获得SqlException:

  

对象'CreateLockOwner'上的EXECUTE权限被拒绝,   数据库'mydatabase',schema'System.Activities.DurableInstancing'。

它发生在store.Execute,如果软件启动:

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'。

Qquestion:

我是否有任何其他可能性忽略了使用脚本向此角色授予权限,而不知道登录名等。

1 个答案:

答案 0 :(得分:0)

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

是否有特殊情况需要他们直接访问商店?