SQL Server Profiler показывает запросы EF к базе данных master?
Чего мне здесь не хватает? Запросы, которые я вижу в SQL Server Profiler, все нацелены на Главную базу данных, что затрудняет фильтрацию по имени базы данных ... какое событие или события я должен наблюдать, чтобы я мог фильтровать по имени базы данных.
Главный вопрос, что именно здесь происходит?
6 ответов:
Вы должны удалить этот 'MultipleActiveResultSets=True' из вашего соединения EntityFramework
Строка
После этого вы можете увидеть имя целевой базы данных , отображаемое в Профилировщике, вместо master.
В моем варианте, возможно ADO.NET команда хочет использовать функцию MultipleActiveResultSets, чтобы получить
Данные из БД, поэтому они должны обращаться к мастеру.
MultipleActiveResultSets - это вызов одного запроса и не возвращает весь его результат (как в foreach оператор в LINQ), и в то же время, вызовите другой запрос, чтобы получить другие данные в том же сеансе.
По умолчанию это поведение не разрешено БД. SO.....
Я смог обойти эту проблему, в том числе оставив MARS активным, добавив имя приложения в строку подключения:
Data Source=database_server;Initial Catalog=MyDatabase;Trusted Connection=true;MultipleActiveResultSets=True;Application Name=MyDatabase;
Затем вы можете фильтровать по имени приложения.
Если это для SQL Server 2008 R2, в свойствах трассировки на вкладке "выбор событий" установите флажок "Показать все столбцы". После этого вы сможете создать фильтр столбцов на основе DatabaseName.
Я полагаю, что вам придется приостановить или остановить трассировку, чтобы внести эти изменения.