cfstoredproc 调用未在 SQL SERVER 分析器中显示运行时值
cfstoredproc call not showing runtime values in SQL SERVER profiler
如果我做
<cfset arg1 = 'test'>
<cfquery> exec sp_mine #arg1# </cfquery>
Profiler 显示了我在运行时传递给 arg1
的正确值。
例如:
EXEC sp_mine 'test'
如果我将 CFQUERY 与查询参数一起使用,我会得到相同的(期望的)行为:
<cfset arg1 = 'test'>
<cfquery datasource="dsn" name="out">
{ CALL sp_mine( <cfqueryparam value = "#arg1#" cfsqltype="CF_SQL_VARCHAR">) }
</cfquery>
但是如果我用 CFSTOREDPROC 替换:
<cfset arg1 = 'test'>
<cfstoredproc datasource="dsn" procedure="sp_mine" >
<cfprocparam type="in" dbvarname="@arg1" cfsqltype="CF_SQL_VARCHAR" value="#arg1#" >
<cfprocresult name="out">
</cfstoredproc>
我得到:
EXEC sp_mine @arg1 = @P1
我正在分析以下事件:
(编辑)这是准确的配置文件详细信息(无关紧要的小改动,传递 1 而不是 'test')
环境:
我正在使用:
- 冷聚变 11,0,05,293506
- SQL 服务器 2014
[已解决]
好的,我找到了一种方法来执行此 FWIW。我觉得这比客户端的 logging/dumping 好得多,因为它是无声且非侵入性的,甚至可以在生产 environments.But 每个人自己完成。
使用 CFSTOREDPROC 时,通过调用 sp_execute
来设置参数的位置。因此,分析它以及您的存储过程将为您提供所需的东西。
示例:
CF:
探查器事件:
分析器过滤器:
输出(在您的 CF 代码运行后):
如果我做
<cfset arg1 = 'test'>
<cfquery> exec sp_mine #arg1# </cfquery>
Profiler 显示了我在运行时传递给 arg1
的正确值。
例如:
EXEC sp_mine 'test'
如果我将 CFQUERY 与查询参数一起使用,我会得到相同的(期望的)行为:
<cfset arg1 = 'test'>
<cfquery datasource="dsn" name="out">
{ CALL sp_mine( <cfqueryparam value = "#arg1#" cfsqltype="CF_SQL_VARCHAR">) }
</cfquery>
但是如果我用 CFSTOREDPROC 替换:
<cfset arg1 = 'test'>
<cfstoredproc datasource="dsn" procedure="sp_mine" >
<cfprocparam type="in" dbvarname="@arg1" cfsqltype="CF_SQL_VARCHAR" value="#arg1#" >
<cfprocresult name="out">
</cfstoredproc>
我得到:
EXEC sp_mine @arg1 = @P1
我正在分析以下事件:
(编辑)这是准确的配置文件详细信息(无关紧要的小改动,传递 1 而不是 'test')
环境:
我正在使用:
- 冷聚变 11,0,05,293506
- SQL 服务器 2014
[已解决] 好的,我找到了一种方法来执行此 FWIW。我觉得这比客户端的 logging/dumping 好得多,因为它是无声且非侵入性的,甚至可以在生产 environments.But 每个人自己完成。
使用 CFSTOREDPROC 时,通过调用 sp_execute
来设置参数的位置。因此,分析它以及您的存储过程将为您提供所需的东西。
示例:
CF:
探查器事件:
分析器过滤器:
输出(在您的 CF 代码运行后):