2014-10-17 100 views
0

我们有很多客户使用db_datawriter和db_datareader角色连接到sql服务器 直到现在我们还没有定义灵活的角色。将用户添加到System.Activities.DurableInstancing角色

现在我们的软件使用最新的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', 数据库 'MyDatabase的',架构 '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:

是否有我忽视授予的权限与脚本这个角色,不知道登录名等任何其他可能性?

回答

0

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

有没有特别的情况下需要他们直接访问商店?

+0

我刚刚添加了一个导致'SqlException'的代码。应允许用户至少查看或启动已保留的工作流程。他们的程序功能权限是独立于数据库权限管理的。如何才能做到另外呢? – 2014-10-22 09:56:10

+0

通过AppFabric(如果您如何托管工作流程)或通过应用程序完成查看和启动已保留的工作流程。用户不需要人员访问数据库。无论如何,他们无能为力。应用程序使用应用程序提供的凭据访问数据库(通常在应用程序或web配置中) – Richard210363 2014-10-24 08:56:47

+0

是的,我们的应用程序使用凭据访问数据库,这不足以执行'CreateWorkflowOwnerCommand'并初始化实例存储。所以我没有别的方法来解决这个凭据?我想避免这种情况,因为客户支持开销。 – 2014-10-24 11:16:09

相关问题