ConnectAsPrivilege: DalConnectAsPrivilegeType;
ConnectAsPrivilege: Prognoz.Platform.Interop.Dal.DalConnectAsPrivilegeType;
Свойство ConnectAsPrivilege определяет подключение к серверу баз данных с заданной привилегией.
Подключение с привилегиями может понадобиться при выполнении операций в «Форсайт. Аналитическая платформа», требующих указания параметров учетной записи, обладающей правами администрирования в Oracle, например, когда пользователь SYSTEM заблокирован по требованиям безопасности и имеется только пользователь SYS.
Для выполнения примера убедитесь, что репозиторий находится на сервере Oracle (тип СУБД Oracle 9.x\10.x\11.x) и на сервере имеется пользователь SYS с паролем «Password».
Добавьте системные сборки: Metabase, Dal, ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
Mb: IMetabase;
MbDef: IMetabaseDefinition;
Pack: ISecurityPackage;
Creds: ICredentials;
Se: IMetabaseSecurity;
Us: IMetabaseUser;
UsUpd: IMetabaseUsersUpdate;
Lic: Object;
Begin
Mb := MetabaseClass.Active;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := Mb.RequestLicense(UiLicenseFeatureType.Adm);
MbDef := Mb.Definition;
Pack := MbDef.Manager.Packs.FindById(MbDef.SecurityPackage).Package;
// Создадим парольные УД
Creds := Pack.CreateCredentials(AuthenticationMode.Password);
// Установим способ подключения с привилегией SYSDBA
Creds.ConnectAsPrivilege := DalConnectAsPrivilegeType.SYSDBA;
(Creds As IPasswordCredentials).UserName := "SYS";
(Creds As IPasswordCredentials).Password := "Password";
// Поместим УД в кэш для использования при соединении для создания/изменения пользователей СУБД
Mb.LogonSession.Credentials("$SYSTEM", True) := Creds;
// Обновим пользователей
Se := Mb.Security;
UsUpd := Se.CreateUsersUpdate;
// Выберем всех пользователей для обновления
For Each Us In Se.Users Do
UsUpd.Add(Us);
End for;
// Обновим выбранных пользователей
Se.UpdateUsers(UsUpd);
//
Сохраним изменения
Se.Apply;
// Освободим лицензию
Lic := Null;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.ForeSystem;
…
Public Shared Sub Main(Params : StartParams);
Var
Mb: IMetabase;
MbDef: IMetabaseDefinition;
Pack: ISecurityPackage;
Creds: ICredentials;
Se: IMetabaseSecurity;
Us: IMetabaseUser;
UsUpd: IMetabaseUsersUpdate;
Lic: Object;
Begin
Mb := Params.Metabase;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := Mb.RequestLicense(UiLicenseFeatureType.lftAdm);
MbDef := Mb.Definition;
Pack := MbDef.Manager.Packs.FindById(MbDef.SecurityPackage).Package;
// Создадим парольные УД
Creds := Pack.CreateCredentials(AuthenticationMode.amPassword);
// Установим способ подключения с привилегией SYSDBA
Creds.ConnectAsPrivilege := DalConnectAsPrivilegeType.dcaptSYSDBA;
(Creds As IPasswordCredentials).UserName := "SYS";
(Creds As IPasswordCredentials).Password := "Password";
// Поместим УД в кэш для использования при соединении для создания/изменения пользователей СУБД
Mb.LogonSession.Credentials["$SYSTEM", True] := Creds;
// Обновим пользователей
Se := Mb.Security;
UsUpd := Se.CreateUsersUpdate();
// Выберем всех пользователей для обновления
For Each Us In Se.Users Do
UsUpd.Add(Us);
End for;
// Обновим выбранных пользователей
Se.UpdateUsers(UsUpd);
// Сохраним изменения
Se.Apply();
// Освободим лицензию
Lic := Null;
End Sub;
После выполнения примера будут обновлены все пользователи репозитория. Для соединения с репозиторием указаны учетные данные пользователя с привилегией SYSDBA.
См. также: