Я пытаюсь добавить роль в мою базу данных SSAS, но у меня возникают проблемы при попытке установить разрешения базы данных.Программно добавление роли с разрешениями базы данных
Следующий код будет работать без ошибок
var server = new Microsoft.AnalysisServices.Server();
server.Connect("localhost\\SQLSERVER2012");
var database = server.Databases["LRTabDB"];
var role = database.Roles.Add(database.Roles.GetNewName("DataHubRole"));
var databasePermission = new Microsoft.AnalysisServices.DatabasePermission
{
RoleID = role.ID,
ID = role.Name,
Name = role.Name,
Read = Microsoft.AnalysisServices.ReadAccess.Allowed
};
database.DatabasePermissions.Add(databasePermission);
var member = new Microsoft.AnalysisServices.RoleMember { Name = "NETWORK SERVICE" };
role.Members.Add(member);
role.Update();
databasePermission.Update();
database.Update();
Но когда я пытаюсь смотреть на роль в среде SQL Server Management Studio, я получаю следующее сообщение об ошибке
не может показать требуемый диалог.
Дополнительная информация:
Ключ не может быть пустым. Имя
Параметр: ключ (система)
Если я удалю создание databasePersmisson
объекта, то я могу просмотреть роль в Management Studio. Но в конечном счете мне нужно установить разрешения базы данных для этой роли. Я также попытался получить разрешения, но следующее возвращает null
.
database.DatabasePermissions.FindByRole(role.ID);
Я также попытался использовать следующие для создания разрешений базы данных и получил те же результаты.
var databasePermissions = database.DatabasePermissions.Add(
database.DatabasePermissions.GetNewName(role.Name));
Наконец я также попытался использовать другое имя и идентификатор для разрешения базы данных от роли, но опять же это не поможет.
Я предполагаю, что есть какой-то шаг, который мне не хватает, но примеры, которые я нашел для этого, не проливают свет на проблему.
https://bennyaustin.wordpress.com/2011/05/24/ssas-using-amo-to-secure-analysis-service-cube/