Создание и настройка базы данных

Рассмотрим несколько примеров создания базы данных для подключения к репозиториям на базе разных СУБД и дальнейшую настройку базы данных. Для выполнения примеров добавьте ссылки на системные сборки: Db, Metabase.

Пример 1

Рассмотрим пример создания базы данных в репозитории, созданном на сервере Oracle.

Sub UserProc;
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    DB: IDatabase;
    Package: ISecurityPackage;
    OracleSPLD: IPrimaryOracleSPLD;
    PswCreds: IPasswordCredentials;
Begin
    MB := MetabaseClass.Active;
    // Создание базы данных
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_DATABASE;
    CrInfo.Id := "NewORCLDB";
    CrInfo.Name := "Новая база данных";
    CrInfo.Parent := MB.Root;
    DB := MB.CreateObject(CrInfo).Edit As IDatabase;
    // Задание настроек подключения к СУБД
    DB.Authentication := AuthenticationMode.Password;
    DB.DriverId := "ORCL8";
    OracleSPLD := DB.LogonData As IPrimaryOracleSPLD;
    OracleSPLD.Server := "TestServer";
    OracleSPLD.Scheme := "TestRepository";
    // Учётные данные
    Package := New StandardSecurityPackage.Create;
    PswCreds := Package.CreateCredentials(AuthenticationMode.Password) As IPasswordCredentials;
    PswCreds.UserName := "User";
    PswCreds.Password := "Password";
    DB.LoginPrompt := False;
    DB.Credentials := PswCreds;
    DB.UseMetabaseCredentials := True;
    // Сохранение изменений
    (DB As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера в корневом каталоге репозитория будет создана новая база данных. Данная база данных будет настроена на подключение к репозиторию «TestRepository». Репозиторий расположен на сервере Oracle с наименованием «TestServer». Будет использоваться автоматическое подключение со следующими учётными данными: имя пользователя - User; пароль - Password.

Пример 2

Рассмотрим пример создания базы данных в репозитории, созданном на сервере Microsoft SQL.

Sub UserProc;
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    DB: IDatabase;
    Package: ISecurityPackage;
    MSSPLD: IPrimaryMsSqlSPLD;
    PswCreds: IPasswordCredentials;
Begin
    MB := MetabaseClass.Active;
    // Создание базы данных
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_DATABASE;
    CrInfo.Id := "NewMSSQLDB";
    CrInfo.Name := "Новая база данных";
    CrInfo.Parent := MB.Root;
    DB := MB.CreateObject(CrInfo).Edit As IDatabase;
    // Задание настроек подключения к СУБД
    DB.Authentication := AuthenticationMode.Password;
    DB.DriverId := "MSSQL2012";
    DB.Unicode := True;
    MSSPLD := DB.LogonData As IPrimaryMsSqlSPLD;
    MSSPLD.Server := "TestServer";
    MSSPLD.Database := "TestRepository";
    // Учётные данные
    Package := New StandardSecurityPackage.Create;
    PswCreds := Package.CreateCredentials(AuthenticationMode.Password) As IPasswordCredentials;
    PswCreds.UserName := "User";
    PswCreds.Password := "Password";
    DB.LoginPrompt := False;
    DB.Credentials := PswCreds;
    // Сохранение изменений
    (DB As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера в корневом каталоге репозитория будет создана новая база данных. Данная база данных будет настроена на подключение к репозиторию «TestRepository». Репозиторий расположен на сервере Microsoft SQL Server с наименованием «TestServer». Будет использоваться автоматическое подключение со следующими учётными данными: имя пользователя - User; пароль - Password.

Пример 3

Рассмотрим пример создания базы данных в репозитории, созданном на сервере PostgreSQL.

Sub UserProc;
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    DB: IDatabase;
    Package: ISecurityPackage;
    PostgreSPLD: IPrimaryPostgresSPLD;
    PswCreds: IPasswordCredentials;
Begin
    MB := MetabaseClass.Active;
    // Создание базы данных
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_DATABASE;
    CrInfo.Id := "Test_PostgreSQL";
    CrInfo.Name := "Новая база данных";
    CrInfo.Parent := MB.Root;
    DB := MB.CreateObject(CrInfo).Edit As IDatabase;
    // Задание настроек подключения к СУБД
    DB.Authentication := AuthenticationMode.Password;
    DB.DriverId := "MSSQL2012";
    DB.Unicode := True;
    PostgreSPLD := DB.LogonData As IPrimaryPostgresSPLD;
    PostgreSPLD.Server := "TestServer";
    PostgreSPLD.Database := "TestRepository";
    PostgreSPLD.UseGssApi := True;
    PostgreSPLD.KrbSrvName := "POSTGRES";
    // Учётные данные
    Package := New StandardSecurityPackage.Create;
    PswCreds := Package.CreateCredentials(AuthenticationMode.Password) As IPasswordCredentials;
    PswCreds.UserName := "User";
    PswCreds.Password := "Password";
    DB.LoginPrompt := False;
    DB.Credentials := PswCreds;
    // Сохранение изменений
    (DB As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера в корневом каталоге репозитория будет создана новая база данных. Данная база данных будет настроена на подключение к репозиторию «TestRepository». Репозиторий расположен на сервере PostgreSQL Server с наименованием «TestServer». Будет использоваться автоматическое подключение со следующими учётными данными: имя пользователя - User; пароль - Password.

Пример 4

Рассмотрим пример настройки базы данных с идентификатором «BD».

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    DB: IDatabase;
Begin
    MB := MetabaseClass.Active;
    // Открытие на редактирование базы данных
    MObj := MB.ItemById("BD").Edit;
    DB := MObj As IDatabase;
    
// Использование для подключения собственных настроек
    DB.UseMetabaseLogonData := False;
    // Автоматическое подключение к базе данных при входе в репозиторий

    DB.LogonData.ParamValue("SERVER") := "NewTest";
    DB.LogonData.ParamValue("SCHEME") := "NewTestShema";
    // Раздача прав на все доступные объекты при подключении к базе данных
    DB.AutoAdjustRights := True;
    // Раздача прав пользователю БД в новой схеме, при изменении имени схемы или сервера в свойствах БД
    DB.GrantCurrentRights := True;
    // Забирание прав пользователя БД в старой схеме, при изменении имени схемы или сервера в свойствах БД
    DB.RevokeGrantedRights := True;

    MObj.Save;
    Debug.WriteLine("Идентификатор пакета безопасности базы данных: " + DB.SecurityPackage);

End Sub UserProc;

После выполнения примера будут переопределены настройки подключения, будут изменены наименования сервера и схемы в настройках базы данных «BD». При сохранении будут автоматически розданы права пользователю на все объекты БД в новой схеме и забраны права в старой схеме. В окно консоли будет выведен идентификатор пакета безопасности базы данных.

Пример 5

Рассмотрим пример переопределения параметров подключения базы данных.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    DB: IDatabase;
    LogonData: IPrimaryServiceSPLD;
Begin
    MB := MetabaseClass.Active;
    // Открытие на редактирование базы данных
    MObj := MB.ItemById("DBWeb").Edit;
    DB := MObj As IDatabase;
    // Использование для подключения настроек, заданных в подключении к репозиторию
    DB.UseMetabaseLogonData := True;    
    // Использование настроек текущего репозитория или переопределенные настройки
    DB.UseServiceLogonData := False;
    // Задание настроек подключения к СУБД
    DB.Authentication := AuthenticationMode.Password;
    DB.DriverId := "WSF";
    LogonData := DB.LogonData As IPrimaryServiceSPLD;
    LogonData.Endpoint := "http://test-srv:9090/axis2/services/PP.SOM.Som";
    LogonData.Metabase := "Warehouse";
    MObj.Save;

End Sub UserProc;

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

Пример 6

Рассмотрим пример настройки использования роли приложения.

Sub UserProc;
Var
    MB : IMetabase;
    DbObj: IMetabaseObject;
    Db : IDatabase;
    Role : IDatabaseApplicationRole;
Begin
    MB := MetabaseClass.Active;
    DbObj := MB.ItemById("DB").Edit;
    
Db := DbObj As iDatabase;
    // Использование роли приложения
    Role := Db.Role;

    If Role.Mode=DatabaseApplicationRoleMode.Off Then
        Role.Mode := DatabaseApplicationRoleMode.On_;
        Role.Name := "Name";
        Role.Password := "Password";
    End If;
    DbObj.Save;

End Sub UserProc;

После выполнения примера будет включено использование роли приложения и заданы для нее учетные данные.

См. также:

Примеры