1

Какая из доступных в памяти баз данных лучше всего поддерживает специальные функции SQL Server?Java-база данных с памятью с поддержкой SQL Server

Я пытался с H2, но имел проблемы, например, с экранирующими именами столбцов: во всех наших наших sql-запросах мы используем (нестандартный) [FIELDNAME] вместо «FIELDNAME». По-видимому, это не поддерживается H2. Могут быть и другие нестандартные функции, которые могут быть использованы, поэтому я задаюсь вопросом, знает ли кто-нибудь о конкретной базе данных, которая ориентирована на совместимость с SQL Server.

Чтобы использовать это в контексте, я использую maven и maven-sql-plugin для создания базы данных перед запуском тестов.

Я смотрел на

  • H2
  • HSQL
  • Derby

, но не может определить, какой из них имел лучшую поддержку для SQL Server или если есть другие, чтобы посмотреть в.

+0

Почему бы не запустить тесты в базе данных разработки SQL Server? Я использовал эту стратегию (хотя с Oracle и PostgreSQL) в нескольких проектах, и она всегда работала хорошо. Вы сохраняете начальную стоимость создания базы данных в базе данных + базовую загрузку данных и избегаете проблем с совместимостью с БД. –

+0

@ Rogério: Я хочу иметь возможность запускать тесты автоматически на Jenkins и быть на 100% уверенным, что никто другой не работает с одной и той же базой данных одновременно и, возможно, изменяет данные. То, что вы предлагаете, - это то, как мы на самом деле делаем это прямо сейчас, и я хотел бы улучшить это. – inovaovao

+0

Ваши тесты никогда не должны связывать транзакцию с базой данных. Таким образом, они всегда будут изолироваться друг от друга, как и должно быть. –

ответ

3

Я действительно обнаружил, что H2 имеет разные режимы совместимости, которые могут быть установлены в строке соединения. Например:

jdbc:h2:~/test;MODE=MSSQLServer 

Это, похоже, решает мою конкретную проблему с экранированием имен столбцов.

Для получения дальнейшей справки можно посмотреть documentation on compatibility modes, чтобы узнать, какие функции поддерживаются для баз данных.

Однако некоторые функции SQL Server, такие как SYSDATETIME(), равны , а не.