How can I create a dump of SQL Server?
https://blogs.msdn.microsoft.com/askjay/2009/12/29/basic-debugging-concepts-and-setup/
You can create a memory dump of the SQL Server process space in several ways. There are many external tools that can help you accomplish this such as userdump.exe, debugdiag.exe, and ADPlus.exe. In this post, I’ll cover 3 common ways to accomplish this for SQL Server: The most common way (sqldumper), using the debugger, and three methods from within SQL Server itself.
First, two of these methods will require that you get the process id (PID) of SQL Server. Here are a few simple ways to do that:
1. From a command window, execute –> tasklist | find /i “sqlservr” or from the Debugging tools directory execute –> tlist | find /i “sqlservr”
2. Open task manager, and find sqlservr.exe and get the PID from the PID column. If you don’t see this column, then select View –> Select Columns to add it.
3. In a query window inside of SSMS on the instance you wish to dump, execute –> “SELECT SERVERPROPERTY(‘PROCESSID’)
4. Get the process ID from the SQL Server Errorlog.
Now that you have the PID, you can use one of the following ways to create the dump:
Method 1 (Using SqlDumper)
The most common way (and the way used internally by SQL Server) is to run SqlDumper.exe. You will find SqlDumper.exe in the following directory for a default installation of SQL Server:
C:\Program Files\Microsoft SQL Server\100\Shared
The syntax of SqlDumper is as follows:
SqlDumper <process id (PID)> <thread id (TID)> <Flags:Minidump Flags> <SQLInfoPtr> <Dump Directory>
more parameters can be seen with SqlDumper /?
The common flags are as follows:
0x0120 – Minidump (this is a dump of just the stacks and loaded modules – this is the smallest of the dump types – this is normally the type of dump created automatically by SQL Server during AVs and other exceptions)
0x01100 – Full Dump (this dumps the entire process space – this can be very large on a 64 bit system or any system with a large amount of memory assigned to SQL Server)
0x8100 – Filtered Dump (a filtered dump is a dump of all of Stolen Memory plus certain areas of the buffer pool)
NOTICE: SQLDumper can be used to dump ANY user mode process – not just SQL Server.
Some examples for SQLServer running under SPID 4024 to c:\temp:
Minidump: sqldumper 4024 0 0x0120 0 c:\temp
Full Dump: sqldumper 4024 0 0x01100 0 c:\temp
Filtered Dump: sqldumper 4024 0 0x8100 0 c:\temp
The dump file will have the naming convention of: SQLDmpr####.mdmp (i.e. SQLDmpr0001.mdmp)
Method 2 (Using a debugger)
To dump SQL Server from WINDBG or other debugger, attach the debugger to the process using the PID:
Once connected, just use the .dump command which has the following syntax:
Options are:
/a – Create dumps for all processes (requires -u)
/b[a] – Package dump in a CAB and delete dump
/c <comment> – Add a comment (not supported in all formats)
/j <addr> – Provide a JIT_DEBUG_INFO address
/f – Create a legacy style full dump
/m[acdfFhiprRtuw] – Create a minidump (default)
/o – Overwrite any existing file
/u – Append unique identifier to dump name
“.dump /ma” is the recommend method of creating a complete memory dump of a user mode process.
So, to create a complete memory dump of the SQL Server to c:\temp, execute the following:
.dump /ma c:\temp\sqldump.dmp
Method 3 (From within SQL Server)
From inside SQL Server, you can create a dump using two different methods. First, to create a manual dump immediately, use the following undocumented command:
DBCC STACKDUMP
This will create a memory dump in the LOG directory of your SQL Server instance installation. To enable this method to create a FULL DUMP, you must turn on trace flags 2544 and 2546:
dbcc traceon(2544, -1)
godbcc traceon(2546, -1)
godbcc stackdump
To create only a minidump, enable trace flag 2546. To create a full-filtered dump, use trace flag 2551.
You can use the undocumented DBCC DUMPTRIGGER command to enable SQL Server to create a dump on the occurrence of an error. You can use the following to enable a full dump on error 802 (There is insufficient memory available in the buffer pool):
— turn on TFs for full dump
dbcc traceon(2544, -1)
go
dbcc traceon(2546, -1)
go— set DUMP TRIGGER for exception 802
dbcc dumptrigger(‘set’, 802)
go
— view exceptions set for DUMP TRIGGER
dbcc traceon(3604, -1)
go
dbcc dumptrigger(‘display’)
go
dbcc traceoff(3604, -1)
go— Turn off dumptrigger for exception 802
dbcc dumptrigger(‘clear’, 802)
go
Finally, you can also use the –y parameter on SQL Server startup to achieve the same functionality as SQL Server’s DBCC DUMPTRIGGER. For more information refer to:
http://blogs.msdn.com/psssql/archive/2008/01/10/how-it-works-sql-server-engine-error-messages.aspx
One method not covered in this post is to create the dump from within Task Manager as seen here:
![]()
I am not a big fan of this method since you have little control over it. It will create a full dump inside your user profile by default. It is also only available on Windows 2008 and Windows 2008 R2 (or Vista and Windows 7). However, it is yet another way to dump the SQL Server process.
– Jay
How can I create a dump of SQL Server?的更多相关文章
- VITAM POST MORTEM – ANALYZING DEADLOCKED SCHEDULERS MINI DUMP FROM SQL SERVER
https://gennadny.wordpress.com/2014/11/ Since SQL Server 7.0, SQL Server has its own scheduling mech ...
- Microsoft SQL Server Version List [sqlserver 7.0-------sql server 2016]
http://sqlserverbuilds.blogspot.jp/ What version of SQL Server do I have? This unofficial build ch ...
- Microsoft SQL Server Version List(SQL Server 版本)
原帖地址 What version of SQL Server do I have? This unofficial build chart lists all of the known Servic ...
- 【转】sql server开启全文索引方法
利用系统存储过程创建全文索引的具体步骤: 1) 启动数据库的全文处理功能 (sp_fulltext_database) 2) 建立全文目录 (sp_fulltext_catalog) 3) 在全文目录 ...
- [SQL in Azure] Provisioning a SQL Server Virtual Machine on Azure
http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-provision-sql-server/ Provi ...
- [SQL in Azure] Getting Started with SQL Server in Azure Virtual Machines
This topic provides guidelines on how to sign up for SQL Server on a Azure virtual machine and how t ...
- Server-side Query interception with MS SQL Server
up vote15down votefavorite 5 I'm researching into intercepting queries that arrive at the SQL Serv ...
- SQL Server事务详解
事务定义: 事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除. 事务三种运行模式: ...
- Create XML Files Out Of SQL Server With SSIS And FOR XML Syntax
So you want to spit out some XML from SQL Server into a file, how can you do that? There are a coupl ...
随机推荐
- I wrote a JSONHelper extension
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Newtonso ...
- 关于k Line Chart (k线图)
K Line Chart python实现k线图的代码,之前找过matplotlib中文文档但是画k线图的finance方法已经弃用了.所以自己在网上搜寻一下加上改编,很好的实现出k线图, 代码如下: ...
- bzoj 2330 SCOI2011糖果 查分约束系统
就根据题目中给的约束条件建图就行了 需要注意的是,我们要做的是最长路,因为需要约束每个点都是大于0 那么可以建一个超级源指向所有点,超级源的dis是1,边长为0 那么这样做最长路就可以了 好了我们这么 ...
- Linux中实现一个简单的进度条【转】
转自:http://blog.csdn.net/yuehailin/article/details/53999288 说起进度条,其实大家常常见到,比如说你在下载视频或文件的时候,提示你当前下载进度的 ...
- PL/SQL Developer 连接 Oracle
1.从官网http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 选择instant ...
- Java坦克大战 (二) 之画一个能动的圆圈代表坦克
本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...
- 3个js函数 变成数组本身的3个方法
<!DOCTYPE html> 3个js函数 变成数组本身的3个方法 /** * 稀疏数组 变成不稀疏数组 * @params array arr 稀疏数组 * @return arry ...
- Corosync 配置描述
NAME corosync.conf - corosync executive configuration file SYNOPSIS /etc/corosync/corosync.conf DESC ...
- Spring--Quartz 任务调度的配置详解
Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz:首先我们来写一个被调度的类: package com.kay.qua ...
- 记一次Laravel定时任务导致日志没有写入权限的坑
问题:用laravel开发定时任务时,发生了日志没有写入权限导致项目打不开的问题 原因:linux的添加定时任务时默认是当前登录用户,我定时任务会生成日志 crontab: kernel: 生成日志的 ...