У нас есть много клиентов, которые подключаются к серверу sql, используя роли db_datawriter и db_datareader. У нас не было никаких гибких ролей, определенных до сих пор.Добавить пользователей в System.Activities.DurableInstancing role
Теперь наше программное обеспечение использует новый хранилище постоянства 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:
EXECUTE разрешение было отказано на объекте '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'. Пользователям должно быть разрешено, по крайней мере, просматривать или запускать уже сохраненные рабочие процессы. Их права на программные функции управляются независимо от разрешений БД. Как это можно сделать иначе? –
Просмотр и запуск уже сохраненных рабочих процессов выполняется либо через AppFabric (если вы размещаете рабочие процессы), либо через приложение. Пользователям не требуется доступ персонала к базе данных. В любом случае, они ничего не могут сделать. Приложения обращаются к базе данных для пользователей, использующих учетные данные, предоставляемые приложением (обычно в приложении или в веб-конфигурации). – Richard210363
Да, наше приложение обращается к БД с использованием учетных данных, чего недостаточно для выполнения 'CreateWorkflowOwnerCommand' и инициализации хранилища экземпляров. Значит, у меня нет другого пути, кроме как исправить эти полномочия? Я бы хотел избежать этого из-за нехватки поддержки клиентов. –