Как я могу использовать SQL Server Profiler для просмотра TSQL, запущенного в триггере CLR? - PullRequest
4 голосов
/ 28 сентября 2011

Как я могу использовать SQL Server Profiler для просмотра TSQL, запущенного в триггере CLR?

У меня есть триггер CLR в БД MS SQL Server, который проверяет вставки, обновления, удаления в таблице и затем условно выполняет вставки в другую таблицу. Есть ли параметр для получения тех вставок T-SQL, которые сделаны из триггера CLR для отображения результатов трассировки SQL Server Profiler?

Ответы [ 2 ]

0 голосов
/ 23 августа 2015

Это зависит от того, как вы выполняете код.Вы используете SqlCommand?Если это так, вы устанавливаете CommandType на StoredProcedure или Text?

Если вы указываете CommandType Text или не указываете CommandType в первую очередь (начиная с Textпо умолчанию), тогда операторы являются динамическим SQL, и вам нужно использовать SQL: StmtStarting и SQL: StmtCompleted события в группе TSQL .Вероятно, это относится к вашему триггеру.

Если вы задаете тип CommandType для StoredProcedure, попробуйте SP: запуск и SP: завершение событий в Группа хранимых процедур .

0 голосов
/ 30 сентября 2011

На вкладке выбора событий после нажатия кнопки «Показать все события» появляется раздел CLR. В нем только одно событие «Сборочная загрузка». Это событие происходит, когда есть запрос на загрузку сборки CLR. Любой SQL, который приходит из сборки, должен регистрироваться как стандартное событие TSQL, поэтому я бы пошел в раздел TSQL и выбрал каждое событие «SQL:». Также ознакомьтесь с разделом «Ошибки и предупреждения». Я предполагаю, что что-то не так в настройке сборки или возникает исключение .NET перед вызовом SQL.

Если ваш триггер CLR является просто условной вставкой в ​​другую таблицу, я бы не использовал сборку. Это особенно верно, если таблица часто выбирается, обновляется или удаляется. Сборки выполняются в области памяти приложений сервера, а не в выделенной области памяти сервера SQL, поэтому внезапно у вас появляется сервер SQL, который использует больше памяти приложения, чем обычно. Я разбил свою справедливую долю серверов SQL таким образом.

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

...