База данных SQL Server продолжает устанавливать SINGLE_USER в тестах - PullRequest
0 голосов
/ 18 июня 2019

У меня есть 2 док-контейнера, в которых размещается их собственный сервер.У меня также есть третий докер-контейнер, в котором размещается база данных SQL Server.Каждый сервер обращается к этой базе данных.

Мой док-контейнер БД настроен так в docker-compose.yml:

my-db:
     image: microsoft/mssql-server-linux:latest
     environment:
       - ACCEPT_EULA=Y
       - SA_PASSWORD=******
     ports:
       - "1433:1433"

Строка подключения к каждому серверу (это серверы .NET):

ConnectionStrings__Default=data source=my-db;initial catalog=TestDb;persist security info=True;user id=SA;password=******;

Когда я запускаю свои тесты, я получаю журнал из контейнера док-станции для БД, который говорит, что он устанавливает режим SINGLE_USER.Это явно нарушает мои тесты, потому что оба сервера должны получить к нему доступ.

Я пытался использовать браузер БД, чтобы установить MULTI_USER, на котором работал ... пока тесты не начались ... Затем БД или что-то в наборе тестовпереключил его обратно на SINGLE_USER.

Как мне настроить это с помощью docker compose, dockerfiles или чего-либо еще, чтобы НЕ включать режим SINGLE_USER или специально включать режим MULTI_USER?

В случае, если это имеет значение:Я также использую Selenium для тестов и circleci для автоматизации тестов.

1 Ответ

0 голосов
/ 19 июня 2019

После изучения базы кода я обнаружил, что она на самом деле не имеет ничего общего с конфигурацией.Я использую Entity Framework, и после каждого теста модульные тесты удалялись и обновлялись в базе данных.Вызов команды migrate переводит базу данных в режим SINGLE_USER.Я узнал об этом, когда удалил вызов migrate из любопытства, и вот, режим SINGLE_USER не был установлен.

Я предполагаю, что вызов migrate (myDbContext.Database.Migrate()) устанавливает режим так, что он выгоняет других слушателей.чтобы не вызывать конфликты в середине миграций.Но это только предположение.Я не смог найти верного ответа на вопрос, почему онлайн.

Короче говоря, решение этой проблемы заключается в том, что кодовая база настраивала режим SINGLE_USER, мне просто нужно было найти вызов.

...