我们有很多客户使用 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”。
问题:
我是否忽略了在不知道登录名等的情况下使用脚本向此角色授予权限的任何其他可能性?
通常,您不会授予用户对持久性存储的访问权限。
应用程序的用户通过工作流引擎使用持久性存储,并且引擎可以访问该存储。
是否有特定场景要求他们直接访问商店?
我通过利用你的部分解决方案解决了与你类似的问题,做了这个小改变:
EXEC sp_addrolemember 'System.Activities.DurableInstancing.InstanceStoreObservers' ,'myUser'
EXEC sp_addrolemember 'System.Activities.DurableInstancing.InstanceStoreUsers' ,'myUser'
EXEC sp_addrolemember 'System.Activities.DurableInstancing.WorkflowActivationUsers' ,'myUser'