从崩溃转储中查看已执行的sql语句

时间:2016-10-13 22:49:50

标签: sql crash-dumps

如何从C#.net应用程序的内存崩溃转储中查看已执行的SQL存储过程?

2 个答案:

答案 0 :(得分:2)

您想要的信息可能不再可用。表示连接,查询和结果的对象可能已经被垃圾收集。

如果您知道用于查询的类的名称,则可以使用,加载扩展名并使用!dumpheap -type <classname>命令查找这些对象。然后使用!do <address>显示此类对象的详细信息。这可能会揭示其背后的陈述。

如果您要查找特定查询,请下载netext扩展程序。它附带!wfrom命令,允许您根据您定义的条件从.NET堆中选择对象。

答案 1 :(得分:1)

这个问题没有简单的答案,许多有经验的调试器不得不以另一种方式面对这个问题。获取单个SQL命令的信息很繁琐,但很简单。对于许多人来说,这很困难。我正在帮助同事解决这种情况,并提出解决方案。它需要NetExt(下载zip文件):https://github.com/rodneyviana/netext/tree/master/Binaries

0:067> !windex
Starting indexing at 14:18:54 PM
1000000 objects...
2000000 objects...
3000000 objects...
4000000 objects...
Indexing finished at 14:19:04 PM
399,314,598 Bytes in 4,049,972 Objects
Index took 00:00:10
0:067> .foreach ({$addr} {!wfrom -type *.sqlcommand -nospace -nofield where (_commandType == 4) select _parameters._items._items}) { r @$t1= {$addr} ;!wfrom -type *.sqlcommand -nofield -nospace where (_parameters._items._items==$dbgeval("@$t1")) "\n", _commandText," [",$addr(),"]\n========================"; !wfrom -nospace -nofield -array {$addr}  _parameterName,"=",$pp(_value) }

dbo.proc_getSiteIdOfHostHeaderSite [00000001011FCD90]
========================
@RETURN_VALUE=0n0
@HostHeader=sp.contoso.com
@RequestGuid={00000000-0000-0000-0000-000000000000}

proc_GetTpWebMetaDataAndListMetaData [0000000101D98DA0]
========================
@RETURN_VALUE=0n0
@WebSiteId={2815591d-55c8-4caf-842c-101d8807cb2a}
@WebId=NULL
@Url=
@ListId=NULL
@ViewId=NULL
@RunUrlToWebUrl=1
@DGCacheVersion=0n2
@SystemId=69 3a 30 29 2e 77 7c 73 2d 31 2d 35 2d 32 31 2d 31 33 38 35 31 37 34 39 39 32 2d 39 37 39 39 35  i:0).w|s-1-5-21-1385174992-97995 (...more...)
@MetadataFlags=0n18
@ThresholdScopeCount=0n5000
@CurrentFolderUrl=NULL
@RequestGuid={a00a0b30-1fcc-44d6-8346-ec20f8c49304}

proc_EnumLists [000000010236EDF0]
========================
@RETURN_VALUE=0n0
@WebId={a0a099b2-6023-4877-a7c1-378ec68df759}
@Collation=Latin1_General_CI_AS
@BaseType=NULL
@BaseType2=NULL
@BaseType3=NULL
@BaseType4=NULL
@ServerTemplate=NULL
@FMobileDefaultViewUrl=NULL
@FRootFolder=NULL
@ListFlags=0n-1
@FAclInfo=0n1
@Scopes=NULL
@FRecycleBinInfo=NULL
@UserId=NULL
@FGP=NULL
@RequestGuid={a00a0b30-1fcc-44d6-8346-ec20f8c49304}

(...)