Как удалить разрешение, участника или роль? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть этот скрипт ниже для добавления ролей, участников и разрешений

Import-Module sqlserver
$Server = new-Object Microsoft.AnalysisServices.Tabular.Server
$Server.Connect("SERVER\INSTANCE")

$TabDB = $SERVER.Databases["DATABASENAME"]
$AddRole = new-Object Microsoft.AnalysisServices.Tabular.ModelRole
$AddRole.Name = 'NewRole1'
$AddRole.ModelPermission="Read"
$RoleMember = New-Object Microsoft.AnalysisServices.Tabular.WindowsModelRoleMember
$RoleMember.MemberName = 'DOMAIN\ACCOUNT'
$TabDB.Model.Roles.Add($AddRole)
$AddRole.Members.Add($RoleMember)
$TabDB.Update([Microsoft.AnalysisServices.UpdateOptions]::ExpandFull)
$server.Disconnect()

Как удалить разрешение, участника и роль?

Я пробовал это хотя бы дляроль, но консоль возвращает обратно «Ложь»

$TabDB.Model.Roles.Remove($AddRole)

1 Ответ

1 голос
/ 16 июля 2019

При работе с ssas из powershell (или C # в этом отношении) вы можете использовать пространство имен analysisservices корпорации Майкрософт: Службы анализа Microsoft .

Это объектно-ориентированный способ работы.с базами данных ssas.

Это старый скрипт, который я написал для сопровождающих:

function addRoleToDb {
  $roleName = Read-Host "How should this role be called?"
  if ($global:dataBase.Roles.findByName($roleName)) {
    echo "This role already exists"
    return
  } elseif ($roleName -eq "") {
    echo "You can't give an empty name for a role."
    return
  }
  echo "Warning: this role will start out empty and will have to be modified in order to be used. (it wil have read permission)"
  [Microsoft.AnalysisServices.Role] $newRole = New-Object([Microsoft.AnalysisServices.Role])($roleName)
  $global:dataBase.Roles.add($newRole)
  $dbperm = $global:dataBase.DatabasePermissions.add($newRole.ID)
  $dbperm.Read = [Microsoft.AnalysisServices.ReadAccess]::Allowed
  $global:dataBase.Roles.Update()
  $dbperm.Update()
  return
}

На данный момент у меня уже была база данных глобальных переменных.Это метод, который добавляет роль в базу данных.Удаление базы данных будет работать практически так же, вы получите экземпляр роли с:

role = database.roles.findbyname()

или

role = database.roles.findbyid()

, а затем

role.Drop(DropOptions.AlterOrDeleteDependents);

YouЯ должен проверить эту последнюю строку перед использованием, потому что alterordeletedependants - это то, что я сейчас использую в своей программе на c #, я не помню, работал ли он в powershell.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...