ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:2.69MB ,
资源ID:9524960      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9524960.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(调试SQLSERVER生成dump文件的方法.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

调试SQLSERVER生成dump文件的方法.docx

1、调试SQLSERVER生成dump文件的方法调试SQLSERVER生成dump文件的方法我们知道调试程序主要有两种方法一种是:live debugging (附加进程 使进程hang住) 生产环境最好不要live debugging一种是:post-mortem debugging or reading dump files (生成dump文件然后进行分析)现在介绍一下如何生成dump文件,以及各种方法的差异第一步:确定SQLSERVER的进程ID由于我的机器安装了四个SQLSERVER实例,所以看到会有四个进程方法1:在cmd窗口输入下面命令tasklist | find /i sqlser

2、vr方法2:打开任务管理进行查看方法3:在SSMS里执行下面sql语句SELECT SERVERPROPERTY(PROCESSID) AS sqlpid方法4:从SQL errorlog里获取进程IDEXEC sys.sp_readerrorlog 第二步:生成DUMP文件方法1:使用SqlDumper最一般的方法就是使用SQLSERVER内部的SqlDumper程序,如果使用默认安装路径default installation path 会是C:Program FilesMicrosoft SQL Server100Shared语法如下:SqlDumper 如果对语法不太熟悉,可以使用/?

3、 查看帮助一般我们会使用到的flag如下:0x0120 Minidump(只会dump出栈和所加载的模块,是最小的dump类型 ,并且这是sqlserver正常情况下自动生成的dump类型)0x01100 Full Dump(这种dump类型包含整个进程空间,如果是64位系统并且SQLSERVER占用大量内存那么dump出来的文件将会非常大)0x8100 Filtered Dump(Filtered Dump 会dump出Stolen Memory和buffer pool部分)SqlDumper这个工具不但只可以dump出sqlserver,也可以dump出其他软件,进而生成dump文件示例:

4、Minidump: sqldumper 3116 0 0x0120 0 C:TempFull Dump: sqldumper 3116 0 0x01100 0 C:TempFiltered Dump: sqldumper 3116 0 0x8100 0 C:TempSQL进程里当前有45个线程生成的minidump文件dump文件的命名规则一般是:SQLDmpr#.mdmp方法2:使用debugger tools例如使用WINDBG或其他debugger工具,将debugger附加到进程(使用PID)里面WINDBG的下载地址:下载下来进行安装,当然这时候可以同时下载公有符号包下载地址:安装好

5、之后,就可以开始菜单看到WINDBG程序,点击他启动选择Attach to a Process。我们附加到进程ID为2168的这个sqlserver进程一旦连接上,我们只需要使用.dump命令就能生成dump文件,语法如下:Options are: /a - Create dumps for all processes (requires -u) 创建所有进程的dump文件 需要-u 选项/ba - Package dump in a CAB and delete dump 包装dump文件为CAB格式然后删除dump文件/c - Add a comment (not supported in

6、 all formats) 添加注释 ,不支持所有格式/j - Provide a JIT_DEBUG_INFO address 提供一个JIT_DEBUG_INFO地址/f - Create a legacy style full dump 创建一个历史full dump/macdfFhiprRtuw - Create a minidump (default) 创建一个mini dump文件(默认选项)/o - Overwrite any existing file 覆盖任何已经存在的文件/u - Append unique identifier to dump name 追加唯一标识符到d

7、ump文件名“.dump /ma” 命令对于创建一个完整的用户态内存dump文件是合适的使用下面命令创建SQLSERVER的mini dump文件放在C:Temp路径下.dump /ma C:Tempsqlexpress_pid2168_dump.dmp方法3:使用SQLSERVER内置的命令在SQLSERVER里面,你可以使用两种方法创建dump文件,第一,使用下面的undocumented命令手工(手工触发)创建DBCC STACKDUMP这个命令会在SQLSERVER实例安装路径下的LOG文件夹生成dump文件,要生成full dump,mini dump,full-filtered d

8、ump需要配合不同的trace flag要生成full dump使用下面命令-full dumpDBCC traceon(2544, -1) godbcc traceon(2546, -1) godbcc stackdumpgodbcc TRACEOFF(2544,2546, -1) go生成mini dump 使用下面命令-mini dump dbcc traceon(2546, -1) godbcc stackdumpGOdbcc TRACEOFF(2544,2546, -1) GO生成full-filtered dump 使用下面命令-full-filtered dump dbcc tr

9、aceon(2551, -1) godbcc stackdumpGOdbcc TRACEOFF(2544,2546,2551, -1) go首先看一下你的SQL实例是安装在哪里,打开服务器属性,看到根目录那一栏然后执行上面的命令full dumpmini dumpfull-filtered dump可以看到dump文件的大小都不一样另一种方法是使用下面的另一个undocumented命令(SQLSERVER自动触发)创建DUMP文件DBCC DUMPTRIGGEDBCC DUMPTRIGGER命令会在当有错误发生的时候触发dump的产生,当然你可以指定当发生某种特定错误的时候才触发可以使用下面

10、的命令当发生701错误的时候触发- turn on TFs for full dump DBCC TRACEON(2544, -1) GO DBCC TRACEON(2546, -1) GO- set DUMP TRIGGER for exception 701 DBCC dumptrigger(set, 701) GO-exception 701 occurBACKUP DATABASE Temp2 TO DISK =E:Temp21FULLBACKUP.BAK ,DISK = E:Temp22FULLBACKUP.bak,DISK = E:Temp23FULLBACKUP.bak,DISK

11、 = E:Temp24FULLBACKUP.bak,DISK = E:Temp25FULLBACKUP.bak,DISK = E:Temp26FULLBACKUP.bakWITH BUFFERCOUNT=999999999,FORMAT-消息 3013,级别 16,状态 1,第 2 行-BACKUP DATABASE 正在异常终止。-消息 701,级别 17,状态 17,第 2 行-资源池 default 没有足够的系统内存来运行此查询。- view exceptions set for DUMP TRIGGER DBCC TRACEON(3604, -1) GO DBCC dumptrigg

12、er(display) GO DBCC TRACEOFF(3604, -1) GO- Turn off dumptrigger for exception 701 DBCC dumptrigger(clear, 701) GO这时候在LOG文件夹下就会看到生成的dump文件方法4:添加SQLSERVER的启动参数y:启动参数在SQL启动的时候能完成DBCC DUMPTRIGGER命令类似的功能For more information refer to:方法5:在任务管理器里按右键-创建转储文件这个方法不是太推荐,不是太可控当点击按钮“创建转储文件”的时候,Windows会创建一个fulldump文件这个功能只能在Windows 2008 、Windows 2008 R2 、Vista 、 Windows 7上使用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1