• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    調試SQLSERVER(一)生成dump文件的方法

    來源:懂視網 責編:小采 時間:2020-11-09 15:37:05
    文檔

    調試SQLSERVER(一)生成dump文件的方法

    調試SQLSERVER(一)生成dump文件的方法:調試SQLSERVER (一)生成dump文件的方法 調試SQLSERVER (二)使用Windbg調試SQLSERVER的環境設置 調試SQLSERVER (三)使用Windbg調試SQLSERVER的一些命令 我們知道調試程序主要有兩種方法 一種是:live debugging (附加進程 使進程ha
    推薦度:
    導讀調試SQLSERVER(一)生成dump文件的方法:調試SQLSERVER (一)生成dump文件的方法 調試SQLSERVER (二)使用Windbg調試SQLSERVER的環境設置 調試SQLSERVER (三)使用Windbg調試SQLSERVER的一些命令 我們知道調試程序主要有兩種方法 一種是:live debugging (附加進程 使進程ha

    調試SQLSERVER (一)生成dump文件的方法 調試SQLSERVER (二)使用Windbg調試SQLSERVER的環境設置 調試SQLSERVER (三)使用Windbg調試SQLSERVER的一些命令 我們知道調試程序主要有兩種方法 一種是:live debugging (附加進程 使進程hang住) 生產環境最好

    調試SQLSERVER (一)生成dump文件的方法

    調試SQLSERVER (二)使用Windbg調試SQLSERVER的環境設置
    調試SQLSERVER (三)使用Windbg調試SQLSERVER的一些命令

    我們知道調試程序主要有兩種方法

    一種是:live debugging (附加進程 使進程hang住) 生產環境最好不要live debugging

    一種是:post-mortem debugging or reading dump files (生成dump文件然后進行分析)

    現在介紹一下如何生成dump文件,以及各種方法的差異


    第一步:確定SQLSERVER的進程ID

    由于我的機器安裝了四個SQLSERVER實例,所以看到會有四個進程

    方法1:在cmd窗口輸入下面命令

    tasklist | find /i "sqlservr"

    方法2:打開任務管理進行查看

    方法3:在SSMS里執行下面sql語句

    SELECT SERVERPROPERTY('PROCESSID') AS sqlpid

    方法4:從SQL errorlog里獲取進程ID

    EXEC [sys].[sp_readerrorlog] 


    第二步:生成DUMP文件

    方法1:使用SqlDumper

    最一般的方法就是使用SQLSERVER內部的SqlDumper程序,如果使用默認安裝路徑default installation path 會是

    C:\Program Files\Microsoft SQL Server\100\Shared

    語法如下:

    SqlDumper     

    如果對語法不太熟悉,可以使用/? 查看幫助

    一般我們會使用到的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文件

    示例:

    Minidump: sqldumper 3116 0 0x0120 0 C:\Temp
    Full Dump: sqldumper 3116 0 0x01100 0 C:\Temp
    Filtered Dump: sqldumper 3116 0 0x8100 0 C:\Temp

    SQL進程里當前有45個線程

    生成的minidump文件

    dump文件的命名規則一般是:SQLDmpr####.mdmp

    方法2:使用debugger tools

    例如使用WINDBG或其他debugger工具,將debugger附加到進程(使用PID)里面

    WINDBG的下載地址:http://msdn.microsoft.com/en-us/windows/hardware/hh852365

    下載下來進行安裝,當然這時候可以同時下載公有符號包

    下載地址:http://msdn.microsoft.com/zh-cn/windows/hardware/gg463028#Download_windows

    安裝好之后,就可以開始菜單看到WINDBG程序,點擊他啟動

    選擇Attach to a Process。。

    我們附加到進程ID為2168的這個sqlserver進程

    一旦連接上,我們只需要使用.dump命令就能生成dump文件,語法如下:

    Options are: 
    /a - Create dumps for all processes (requires -u) 創建所有進程的dump文件 需要-u 選項
    /b[a] - Package dump in a CAB and delete dump 包裝dump文件為CAB格式然后刪除dump文件
    /c  - Add a comment (not supported in all formats) 添加注釋 ,不支持所有格式
    /j  - Provide a JIT_DEBUG_INFO address 提供一個JIT_DEBUG_INFO地址
    /f - Create a legacy style full dump 創建一個歷史full dump
    /m[acdfFhiprRtuw] - Create a minidump (default) 創建一個mini dump文件(默認選項)
    /o - Overwrite any existing file 覆蓋任何已經存在的文件
    /u - Append unique identifier to dump name 追加唯一標識符到dump文件名

    “.dump /ma” 命令對于創建一個完整的用戶態內存dump文件是合適的

    使用下面命令創建SQLSERVER的mini dump文件放在C:\Temp路徑下

    .dump /ma C:\Temp\sqlexpress_pid2168_dump.dmp

    方法3:使用SQLSERVER內置的命令

    在SQLSERVER里面,你可以使用兩種方法創建dump文件,第一,使用下面的undocumented命令手工(手工觸發)創建

    DBCC STACKDUMP

    這個命令會在SQLSERVER實例安裝路徑下的LOG文件夾生成dump文件,要生成full dump,mini dump,full-filtered dump需要配合不同的trace flag

    要生成full dump使用下面命令

    --full dump
    DBCC traceon(2544, -1) 
    go
    dbcc traceon(2546, -1) 
    go
    dbcc stackdump
    go
    dbcc TRACEOFF(2544,2546, -1) 
    go

    生成mini dump 使用下面命令

    --mini dump 
    dbcc traceon(2546, -1) 
    go
    
    dbcc stackdump
    GO
    dbcc TRACEOFF(2544,2546, -1) 
    GO

    生成full-filtered dump 使用下面命令

    --full-filtered dump 
    dbcc traceon(2551, -1) 
    go
    
    dbcc stackdump
    GO
    dbcc TRACEOFF(2544,2546,2551, -1) 
    go

    首先看一下你的SQL實例是安裝在哪里,打開服務器屬性,看到根目錄那一欄

    然后執行上面的命令

    full dump

    mini dump

    full-filtered dump

    可以看到dump文件的大小都不一樣

    另一種方法是使用下面的另一個undocumented命令(SQLSERVER自動觸發)創建DUMP文件

    DBCC DUMPTRIGGE

    DBCC DUMPTRIGGER命令會在當有錯誤發生的時候觸發dump的產生,當然你可以指定當發生某種特定錯誤的時候才觸發

    可以使用下面的命令當發生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 occur
    BACKUP DATABASE [Temp2] 
    TO 
    DISK ='E:\Temp21FULLBACKUP.BAK' ,
    DISK = 'E:\Temp22FULLBACKUP.bak',
    DISK = 'E:\Temp23FULLBACKUP.bak',
    DISK = 'E:\Temp24FULLBACKUP.bak',
    DISK = 'E:\Temp25FULLBACKUP.bak',
    DISK = 'E:\Temp26FULLBACKUP.bak'
    WITH 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 dumptrigger('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:

    http://blogs.msdn.com/psssql/archive/2008/01/10/how-it-works-sql-server-engine-error-messages.aspx

    方法5:在任務管理器里按右鍵->創建轉儲文件

    這個方法不是太推薦,不是太可控

    當點擊按鈕“創建轉儲文件”的時候,Windows會創建一個full dump文件

    這個功能只能在Windows 2008 、Windows 2008 R2 、Vista 、 Windows 7上使用

    下篇講解 使用Windbg調試SQLSERVER的環境設置

    參考文章

    http://blogs.msdn.com/b/askjay/archive/2010/02/05/how-can-i-create-a-dump-of-sql-server.aspx

    歡迎大家拍磚o(∩_∩)o

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    調試SQLSERVER(一)生成dump文件的方法

    調試SQLSERVER(一)生成dump文件的方法:調試SQLSERVER (一)生成dump文件的方法 調試SQLSERVER (二)使用Windbg調試SQLSERVER的環境設置 調試SQLSERVER (三)使用Windbg調試SQLSERVER的一些命令 我們知道調試程序主要有兩種方法 一種是:live debugging (附加進程 使進程ha
    推薦度:
    標簽: 文件 生成 方法
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 人妻少妇精品视频二区| 久久夜色精品国产噜噜亚洲AV| 亚洲国产精品国产自在在线| 国产成人精品视频一区二区不卡| 精品日本一区二区三区在线观看| 国产精品第13页| 亚洲国产精品无码久久98| 国产午夜精品理论片免费观看| 国产精品国产亚洲精品看不卡| 中文字幕日韩精品在线| 精品一区二区三区高清免费观看 | 91久久婷婷国产综合精品青草| 亚洲精品国产高清不卡在线| 久久国产午夜精品一区二区三区 | 国产伦精品一区二区三区女 | 日韩精品无码AV成人观看| 亚洲精品欧美二区三区中文字幕| 精品久久久久久无码人妻热| 99久久亚洲综合精品网站| 久久精品一区二区三区不卡| 国产cosplay精品视频| 国产伦精品一区二区三区| 日韩精品一区二区三区影院| 久久乐国产精品亚洲综合| 精品国产午夜肉伦伦影院| 国产精品久久久天天影视香蕉| 欧美精品在线一区二区三区| 国产在线不卡午夜精品2021| 国产精品高清一区二区三区不卡| xxx国产精品视频| 国产精品视频一区二区三区四| 麻豆亚洲AV永久无码精品久久| 亚洲乱码精品久久久久..| 亚洲高清专区日韩精品| 无码精品久久久久久人妻中字| 中文字幕一精品亚洲无线一区| 亚洲精品无码你懂的网站| 一本精品中文字幕在线| 在线涩涩免费观看国产精品| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 91麻豆精品国产91久久久久久|