ICredentials.ConnectAsPrivilege

Синтаксис

ConnectAsPrivilege: DalConnectAsPrivilegeType;

ConnectAsPrivilege: Prognoz.Platform.Interop.Dal.DalConnectAsPrivilegeType;

Описание

Свойство ConnectAsPrivilege определяет подключение к серверу баз данных с заданной привилегией.

Комментарии

Подключение с привилегиями может понадобиться при выполнении операций в «Форсайт. Аналитическая платформа», требующих указания параметров учетной записи, обладающей правами администрирования в Oracle, например, когда пользователь SYSTEM заблокирован по требованиям безопасности и имеется только пользователь SYS.

Пример Fore

Для выполнения примера убедитесь, что репозиторий находится на сервере 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.

См. также:

ICredentials