Рассмотрим несколько примеров создания базы данных для подключения к репозиториям на базе разных СУБД и дальнейшую настройку базы данных. Для выполнения примеров добавьте ссылки на системные сборки: Db, Metabase.
Рассмотрим пример создания базы данных в репозитории, созданном на сервере 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.
Рассмотрим пример создания базы данных в репозитории, созданном на сервере 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.
Рассмотрим пример создания базы данных в репозитории, созданном на сервере 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.
Рассмотрим пример настройки базы данных с идентификатором «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». При сохранении будут автоматически розданы права пользователю на все объекты БД в новой схеме и забраны права в старой схеме. В окно консоли будет выведен идентификатор пакета безопасности базы данных.
Рассмотрим пример переопределения параметров подключения базы данных.
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;
После выполнения примера будут переопределены параметры подключения для указанной базы данных. Подключение будет осуществляться через указанный веб-сервис «Форсайт. Аналитическая платформа».
Рассмотрим пример настройки использования роли приложения.
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;
После выполнения примера будет включено использование роли приложения и заданы для нее учетные данные.
См. также: