Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 SSAS / PowerShell - синхронизация ролей между базами  [new]
vikkiv
Member

Откуда: London
Сообщений: 1098
Кто (если есть) поделится готовым PowerShell скриптом для копирования (или синхронизации) настроек безопасности (на атрибуты измерений в кубах, измерений в ДБ, доступ к кубам) между схожими по структуре базами (названия и ID ролей тоже есть в обеих базах - но в принимающей они пустые).
Может у кого готовый есть - а то мне до вечера придётся писать/отлаживать .. если не пару дней..
Идея обойти foreach(){} вложенными циклами по цепи
CubePermissions[$cub.ID]
DimensionPermissions[$dim.ID]
AttributePermissions[$attr.ID]
и прописать свойства типа:
AllowedSet =
DeniedSet =
VisualTotals =
DefaultMember =
$cubeacc.Read = ReadAccess.Allowed
16 май 17, 13:05    [20484660]     Ответить | Цитировать Сообщить модератору
 Re: SSAS / PowerShell - синхронизация ролей между базами  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 857
vikkiv,
Если возможно выложите потом результаты труда (точнее ссылку)
возможно тоже пригодится.
16 май 17, 19:52    [20486632]     Ответить | Цитировать Сообщить модератору
 Re: SSAS  [new]
vikkiv
Member

Откуда: London
Сообщений: 1098
Гулин Федор,

да просто переписал напрямую нужные properties без всяких финтов (скрипт на синхронизацию самих ролей {ID и Name} отдельный) пока аккуратно куб за кубом (в моём случае т.к. структуры идентичные - то отлова ошибок и отчёта не требуется) что-то вроде:
[Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")>$Null;cls
$sasvr=New-Object Microsoft.AnalysisServices.Server;$sasvr.Connect("YourServer") 
$db0="Roles_Clone_Source_SSAS_DB";$cub0="YourCubeID"
$db1="Roles_Clone_Dest_SSAS_DB";$cub1=$cub0
foreach($cperm0 in $sasvr.Databases[$db0].Cubes[$cub0].CubePermissions){
$cperm1=$sasvr.Databases[$db1].Cubes[$cub1].CubePermissions.Add($cperm0.RoleID)
$cperm1.RoleID=$cperm0.RoleID
$cperm1.Name=$cperm0.Name
$cperm1.ID=$cperm0.ID
$cperm1.Read=$cperm0.Read
$cperm1.Write=$cperm0.Write
$cperm1.ReadDefinition=$cperm0.ReadDefinition
$cperm1.ReadSourceData=$cperm0.ReadSourceData
$cperm1.Process=$cperm0.Process
foreach($dperm0 in $cperm0.DimensionPermissions){
$dperm1=$sasvr.Databases[$db1].Cubes[$cub1].CubePermissions[$cperm0.ID].DimensionPermissions.Add($dperm0.CubeDimensionID)
$dperm1.Read=$dperm0.Read
$dperm1.Write=$dperm0.Write
foreach($aperm0 in $dperm0.AttributePermissions){
$aperm1=$sasvr.Databases[$db1].Cubes[$cub1].CubePermissions[$cperm0.ID].DimensionPermissions[$dperm0.CubeDimensionID].AttributePermissions.Add($aperm0.AttributeID)
$aperm1.AllowedSet=$aperm0.AllowedSet
$aperm1.DeniedSet=$aperm0.DeniedSet
$aperm1.DefaultMember=$aperm0.DefaultMember
$aperm1.VisualTotals=$aperm0.VisualTotals
}}$cperm1.Update()}
$sasvr.Disconnect();$sasvr.Dispose();Remove-Variable sasvr
17 май 17, 17:09    [20490673]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить