2015-04-02 3 views
5

Я использую LocalDb в среде тестирования интеграции - создание экземпляра экземпляра и его удаление до и после моих тестов.Могу ли я запустить LocalDb «in-memory»

Однако, когда я создаю базу данных в своем экземпляре, она по-прежнему сбрасывает мои таблицы и данные на диск. Возможно ли запустить LocalDb в режиме «in-memory»? И если да, то как?

+0

Если вы используете transactioncope - https://github.com/ritterim/automation-sql – ErikEJ

+0

Я не совсем уверен, как эта ссылка помогает (я искал исходный код для транзакции, но ничего не нашел). Мои интеграционные тесты включают в себя «в процессе» услуги, которые не распространяют транзакции, поэтому запуск моих тестов в рамках одной транзакции не поможет, но, возможно, я неправильно понял ваш комментарий. – Lawrence

ответ

2

Нет. LocalDB по-прежнему является SQL Server, а в SQL Server отсутствует концепция базы данных в памяти. Все базы данных защищены от копирования на диске, в то время как в них находится кеш памяти.

Возможно, вы, возможно, напишите свой настраиваемый шаг в тестовом жгуте, чтобы сбросить базы данных после завершения тестов и удалить файлы базы данных. Может быть, даже это уже существует, если вы используете TFS для сборки и тестирования? Но в LocalDB ничего нет, чтобы сделать его автоматическим.

+0

на самом деле не так, что сервер sql не имеет памяти с GA сервера sql 2014, но localdb все еще не настолько, насколько я знаю. http://www.microsoft.com/en-us/server-cloud/solutions/in-memory.aspx –

+1

Я не думаю, что функции встроенной памяти SQL Server 2014 включают в себя ** базы данных **. Есть в памяти ** таблицы **, но я понимаю, что даже если все таблицы в базе данных находятся в памяти, база данных по-прежнему поддерживается файлом с метаданными и т. Д. –

+0

BTW, спасибо за исправление опечатки! –

4

Вы можете запускать свои тесты против базы данных на RAM-диске. Я сделал это некоторое время назад, и, похоже, улучшить производительность интеграционных тестов в 2 или 3 раза! Это было на виртуальной машине Windows 7, размещенной в MacBook Pro с SSD. Скорее всего, ваше оружие будет лучше, если у вас есть механический жесткий диск.

Поскольку SQL Server позволяет указать файл mdf в строке подключения через «AttachDbFileName =», вы можете использовать это, указав на mdf в RAM-диске.

Драйвер устройства RAM, который я использовал, был ImDisk, который доступен как для 64, так и для 32-битных Windows. Совместимы с Linux.

Смежные вопросы