3.3.1.1. Использование произвольной схемы БД
PostgreSQL и Microsoft SQL Server поддерживают подключение к произвольной схеме внутри базы данных. По умолчанию на PostgreSQL используется схема public
, на SQL Server - схема dbo
.
- PostgreSQL
-
При использовании Studio, добавьте параметр
currentSchema
в поле Connection params окна Data Store Properties. При этом Studio автоматически обновит файлы проекта в соответствии с выбранным способом конфигурации источника данных. В противном случае, укажите параметр соединения как описано ниже.Если источник данных конфигурируется в приложении, добавьте свойство с полным URL подключения, например:
cuba.dataSource.jdbcUrl = jdbc:postgresql://localhost/demo?currentSchema=my_schema
Если источник данных получается из JNDI, добавьте параметр
currentSchema
в URL подключения в определении источника данных (для Tomcat оно находится вcontext.xml
) и в свойствоconnectionParams
задач сборки createDb и updateDb, например:task createDb(dependsOn: assembleDbScripts, type: CubaDbCreation) { dbms = 'postgres' host = 'localhost' dbName = 'demo' connectionParams = '?currentSchema=my_schema' dbUser = 'postgres' dbPassword = 'postgres' }
После этого можно запускать обновление или пересоздание БД, все таблицы будут созданы в указанной схеме.
- Microsoft SQL Server
-
На Microsoft SQL Server указания параметра подключения недостаточно, необходимо также создать связь между пользователем БД и схемой. Ниже приведен пример создания базы данных и использования схемы.
-
Создайте login:
create login JohnDoe with password='saPass1'
-
Создайте новую БД:
create database my_db
-
Подключитесь к новой БД как
sa
, создайте схему, затем создайте пользователя и дайте ему права владельца:create schema my_schema create user JohnDoe for login JohnDoe with default_schema = my_schema exec sp_addrolemember 'db_owner', 'JohnDoe'
При использовании Studio, добавьте параметр
currentSchema
в поле Connection params окна Data Store Properties. При этом Studio автоматически обновит файлы проекта в соответствии с выбранным способом конфигурации источника данных. В противном случае, укажите параметр соединения как описано ниже.Если источник данных конфигурируется в приложении, добавьте свойство с полным URL подключения, например:
cuba.dataSource.jdbcUrl = jdbc:sqlserver://localhost;databaseName=demo;currentSchema=my_schema
Если источник данных получается из JNDI, добавьте параметр
currentSchema
в URL подключения в определении источника данных (для Tomcat оно находится вcontext.xml
) и в свойствоconnectionParams
задач сборки createDb и updateDb, например:task updateDb(dependsOn: assembleDbScripts, type: CubaDbUpdate) { dbms = 'mssql' dbmsVersion = '2012' host = 'localhost' dbName = 'demo' connectionParams = ';currentSchema=my_schema' dbUser = 'JohnDoe' dbPassword = 'saPass1' }
Имейте в виду, что пересоздавать БД SQL Server из Studio или выполнением
createDb
в командной строке нельзя, так как использование не-дефолтной схемы требует ассоциации с пользователем. Однако можно выполнять Update Database в Studio илиupdateDb
в командной строке, и все необходимые таблицы будут созданы в существующей базе данных и в указанной схеме. -