cfstoredproc调用未在SQL SERVER概要分析器中显示运行时值

时间:2015-11-18 16:43:30

标签: coldfusion sql-server-profiler

如果我做了

O(n ln(n))

Profiler显示我在运行时传递给<cfset arg1 = 'test'> <cfquery> exec sp_mine #arg1# </cfquery> 的正确值。

e.g:

arg1

如果我将CFQUERY与queryparam一起使用,我会得到相同的(期望的)行为:

 EXEC sp_mine 'test'

但如果我用CFSTOREDPROC代替:

<cfset arg1 = 'test'>
<cfquery datasource="dsn" name="out">
    { CALL sp_mine( <cfqueryparam value = "#arg1#" cfsqltype="CF_SQL_VARCHAR">) }
</cfquery>

我明白了:

<cfset arg1 = 'test'>
<cfstoredproc datasource="dsn" procedure="sp_mine" >
   <cfprocparam type="in" dbvarname="@arg1" cfsqltype="CF_SQL_VARCHAR" value="#arg1#"  >
   <cfprocresult name="out">
</cfstoredproc>

我正在分析以下事件:

enter image description here

(编辑)以下是确切的个人资料详情(小的无关更改,通过1代替&#39;测试&#39;)

enter image description here

环境:

我正在使用:

  • Coldfusion 11,0,05,293506
  • SQL Server 2014

1 个答案:

答案 0 :(得分:1)

<强> [解决] 好的,我找到了一种方法来做这个FWIW。我觉得这比在客户端记录/转储要好得多,因为它是静默的,非侵入式的,甚至可以在prod环境中完成。但每个都是他自己的。

使用CFSTOREDPROC时,通过调用sp_execute来定位参数。因此,分析这个以及您的杂项将为您提供所需的信息。

示例:

<强> CF:

enter image description here

Profiler事件:

enter image description here

Profiler过滤器:

enter image description here

输出(运行CF代码后):

enter image description here