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

相關問題