ConnectAsPrivilege: DalConnectAsPrivilegeType;
ConnectAsPrivilege: Prognoz.Platform.Interop.Dal.DalConnectAsPrivilegeType;
Свойство ConnectAsPrivilege определяет подключение к серверу баз данных с заданной привилегией.
Подключение с привилегиями может понадобиться при выполнении операций в Prognoz Platform 8, требующих указания параметров учетной записи, обладающей правами администрирования в Oracle, например, когда пользователь SYSTEM заблокирован по требованиям безопасности и имеется только пользователь SYS.
Для выполнения примера подключите к модулю системные сборки 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.
Для выполнения примера подключите к модулю системные сборки 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.
См. также: