powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS / PowerShell - синхронизация ролей между базами
3 сообщений из 3, страница 1 из 1
SSAS / PowerShell - синхронизация ролей между базами
    #39453754
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто (если есть) поделится готовым PowerShell скриптом для копирования (или синхронизации) настроек безопасности (на атрибуты измерений в кубах, измерений в ДБ, доступ к кубам) между схожими по структуре базами (названия и ID ролей тоже есть в обеих базах - но в принимающей они пустые).
Может у кого готовый есть - а то мне до вечера придётся писать/отлаживать .. если не пару дней..
Идея обойти foreach(){} вложенными циклами по цепи
CubePermissions[$cub.ID]
DimensionPermissions[$dim.ID]
AttributePermissions[$attr.ID]
и прописать свойства типа:
AllowedSet =
DeniedSet =
VisualTotals =
DefaultMember =
$cubeacc.Read = ReadAccess.Allowed
...
Рейтинг: 0 / 0
SSAS / PowerShell - синхронизация ролей между базами
    #39454122
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv,
Если возможно выложите потом результаты труда (точнее ссылку)
возможно тоже пригодится.
...
Рейтинг: 0 / 0
SSAS / PowerShell - синхронизация ролей между базами
    #39454876
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

да просто переписал напрямую нужные properties без всяких финтов (скрипт на синхронизацию самих ролей {ID и Name} отдельный) пока аккуратно куб за кубом (в моём случае т.к. структуры идентичные - то отлова ошибок и отчёта не требуется) что-то вроде:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
[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
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS / PowerShell - синхронизация ролей между базами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]