我們有很多客戶使用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_datawriter
和db_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:
是否有我忽視授予的權限與腳本這個角色,不知道登錄名等任何其他可能性?
我剛剛添加了一個導致'SqlException'的代碼。應允許用戶至少查看或啓動已保留的工作流程。他們的程序功能權限是獨立於數據庫權限管理的。如何才能做到另外呢? – 2014-10-22 09:56:10
通過AppFabric(如果您如何託管工作流程)或通過應用程序完成查看和啓動已保留的工作流程。用戶不需要人員訪問數據庫。無論如何,他們無能爲力。應用程序使用應用程序提供的憑據訪問數據庫(通常在應用程序或web配置中) – Richard210363 2014-10-24 08:56:47
是的,我們的應用程序使用憑據訪問數據庫,這不足以執行'CreateWorkflowOwnerCommand'並初始化實例存儲。所以我沒有別的方法來解決這個憑據?我想避免這種情況,因爲客戶支持開銷。 – 2014-10-24 11:16:09