SQL Server Profiler не отображает операторы SQL, встроенные в компоненты ColdFusion

В нашем приложении ColdFusion 11 с SQL Server 2008 R2. Файл .cfm использует компонент CF, который вызывается с таким синтаксисом, как:

<cfscript>
    objMyTable = createobject('component','components.myTable);
    qmyTable2list = objMyTable.loadAllCustomers();
        qresultset = objMyTable.loadCustomersResultset(form.applicant_type, form.customer_name, form.state, form.orderby);
</cfscript>

Компонент CF имеет операторы SQL, подобные показанному ниже:

<cfquery name="result_set" dataSource="#request.dsn_name#">
        select name, state from myTable #REReplace(where_clause,"''","'","ALL")#        
</cfquery>

Когда мы нажимаем кнопку на странице .cfm, приложение правильно отображает данные из SQL Server 2008-R2. Но SQL Profiler не улавливает эти операторы SQL. Когда мы запускаем профилировщик на страницах .cfm, которые используют встроенные теги cfquery для запросов sql (вместо компонентов CF), профилировщик SQL отображает все запросы, выполненные страницей. Вопрос: как заставить SQL Profiler перехватывать запросы внутри компонента CF?

ОБНОВЛЕНИЕ В профилировщике выбраны следующие события: введите здесь описание изображения


person nam    schedule 06.11.2015    source источник
comment
Вы отслеживаете SP:StmtCompleted? Я предполагаю, что с компонентом он использует sp_executesql вместо простого select   -  person Lukasz Szozda    schedule 06.11.2015
comment
@lad2025 Да, я использую SP:StmtCompleted, как описано здесь   -  person nam    schedule 06.11.2015
comment
SP:* предназначен для хранимых процедур, приведенный выше фрагмент не похож на хранимую процедуру. Убедитесь, что вы щелкнули правой кнопкой мыши объект TSQL и выбрали все.   -  person Greg    schedule 06.11.2015
comment
Хороший совет. Если вы не уверены на 100 %, какой тип операторов нужно захватить, лучше всего начать с выбора всех. Затем отфильтруйте те, которые вам не нужны впоследствии.   -  person Leigh    schedule 06.11.2015
comment
@Greg Я только что добавил в свой пост раздел Update, показывающий события, которые я фиксирую, включая TSQL.   -  person nam    schedule 06.11.2015
comment
Нам - он должен их захватить. - какие у вас фильтры? вы профилируете, используя sa или другое имя пользователя? Я довольно часто использую профайлер и могу сказать вам, что он должен точно перехватывать ваши запросы JDBC.   -  person Mark A Kruger    schedule 06.11.2015
comment
Как сказали @greg и leigh - сначала начните со ВСЕХ объектов TSQL ... убедитесь, что вы перехватываете запросы, а затем удалите то, что, по вашему мнению, вам не нужно.   -  person Mark A Kruger    schedule 06.11.2015
comment
@MarkAKruger Согласно Грегу и вашему предложению, я попробовал с all TSQL объектами, как показано на моем обновленном рисунке выше. Но все равно не повезло. Я также проверил, что НЕТ фильтра, который я использую. Те же настройки профилировщика, что показаны выше, прекрасно работают, когда запросы находятся в файле .cfm, а не в файле .cfc.   -  person nam    schedule 11.11.2015
comment
Хм... это загадка. Есть вероятность, что вы где-то по-другому настраиваете источник данных - возможно, в вашей папке CFC есть собственный application.cfc?   -  person Mark A Kruger    schedule 13.11.2015
comment
Я с @Greg также включаю все события в узле «Хранимые процедуры». Вы должны, по крайней мере, зафиксировать эти события. RPC:Completed, SP:StmtCompleted и SQL:BatchCompleted. Вот хороший пост для вас. mssqltips.com/sqlservertip/2040/   -  person cameront    schedule 29.02.2016


Ответы (1)


Захватите события «RPC:Completed» и/или «RPC:Starting», и вы увидите свои запросы ColdFusion.

person Paul Wehland    schedule 25.05.2016