SQL Server Profiler показывает запросы EF к основной базе данных? - PullRequest
3 голосов
/ 23 марта 2011

Что мне здесь не хватает? Все запросы, которые я вижу в SQL Server Profiler, направлены на основную базу данных, что затрудняет фильтрацию по имени базы данных ... какое событие или события я должен наблюдать, чтобы я мог фильтровать по имени базы данных.

Большой вопрос, что именно здесь происходит?

Ответы [ 6 ]

5 голосов
/ 27 ноября 2012

Вы должны удалить этот 'MultipleActiveResultSets = True' из вашего соединения EntityFramework

string

, после этого вы можете увидеть имя целевой базы данных, отображаемое в Profiler, вместо master.

В моем случае, может быть, команда ADO.NET захочет использовать функцию MultipleActiveResultSets для получения

данных из БД, поэтому им необходим доступ к master.запросить и не возвращать все его результаты (как в выражении foreach в LINQ), и в то же время поднять другой запрос, чтобы получить другие данные в том же сеансе.

По умолчанию это поведение не разрешенопо БД.ТАК .....

4 голосов
/ 14 июня 2012

Я смог обойти эту проблему, в том числе оставив MARS активным, добавив имя приложения в строку подключения:

Data Source=database_server;Initial Catalog=MyDatabase;Trusted Connection=true;MultipleActiveResultSets=True;Application Name=MyDatabase;

Затем вы можете выполнить фильтрацию по имени приложения.

1 голос
/ 12 августа 2011

Как отметил К. Иванов, при включении MARS (MultipleActiveResultSets) имя DatabaseName будет отображаться как master в SQL Profiler. Если установить значение false, будет отображаться правильное имя базы данных, но тогда вы потеряете возможность иметь MultipleActiveResults.

1 голос
/ 23 марта 2011

Если это для SQL Server 2008 R2, в свойствах трассировки на вкладке «Выбор событий» установите флажок «Показать все столбцы».После этого вы сможете создать фильтр столбцов на основе DatabaseName.

Я полагаю, что для внесения этих изменений вам придется приостановить или остановить трассировку.

0 голосов
/ 23 марта 2011

По какой-то причине, если я выбрал событие SP: CacheHit, теперь оно показывает запросы к правильной базе данных, и я могу фильтровать по нему.Что это за событие?

0 голосов
/ 23 марта 2011

вы можете использовать LoginName или HostName для фильтрации в профилировщике

...