ICredentials.ConnectAsPrivilege

Синтаксис Fore

ConnectAsPrivilege: DalConnectAsPrivilegeType;

Синтаксис Fore.NET

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

Описание

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

Комментарии

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

Пример Fore

Для выполнения примера подключите к модулю системные сборки Metabase, Dal. Предполагается, что репозиторий находится на сервере Oracle (тип СУБД Oracle 9.x\10.x\11.x), на сервере имеется пользователь SYS с паролем «Password».

Sub UserProc;
Var 
    Mb: IMetabase;
    MbDef: IMetabaseDefinition;
    Pack: ISecurityPackage;
    Creds: ICredentials;
    Se: IMetabaseSecurity;
    Us: IMetabaseUser;
    UsUpd: IMetabaseUsersUpdate;
Begin
    Mb := MetabaseClass.Active;
    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);
End Sub UserProc;

После выполнения примера будут обновлены все пользователи репозитория, для соединения были указаны учетные данные пользователя с привилегией  SYSDBA.

Пример Fore.NET

Для выполнения примера подключите к модулю системные сборки Metabase, Dal. Предполагается, что репозиторий находится на сервере Oracle (тип СУБД Oracle 9.x\10.x\11.x), на сервере имеется пользователь SYS с паролем «Password».

Public Shared Sub Main(Params : StartParams);
Var 
    Mb: IMetabase;
    MbDef: IMetabaseDefinition;
    Pack: ISecurityPackage;
    Creds: ICredentials;

    Se: IMetabaseSecurity;
    Us: IMetabaseUser;
    UsUpd: IMetabaseUsersUpdate;
Begin
    Mb := Params.Metabase;
    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);
    
End Sub;

После выполнения примера будут обновлены все пользователи репозитория, для соединения были указаны учетные данные пользователя с привилегией  SYSDBA.

См. также:

ICredentials