Så här använder du verktyget Sqldumper. exe för att skapa en dumpfil i SQL Server

Sammanfattning

Verktyget Sqldumper. exe ingår i Microsoft SQL Server. I den här artikeln beskrivs hur du använder verktyget Sqldumper. exe för att skapa en dumpfil för fel rapportering för Watson eller för att felsöka uppgifter.

Anteckningarutöver verktyget Sqldumper. exe är följande metoder också tillgängliga:

Varning Att generera process dum par kan påverka tjänstens tillgänglighet (här SQL Server) och utlösa failover för resurser i alltid i sammanhang (både failover-kluster instans och tillgänglighets grupp). De alternativ som används för att generera dumpfiler blir stor skillnad. Se till att du läser effekten av avsnitten om dumpar och dumpade typer .

När du fångar upp en dumpfil för SQL Server (särskilt en filtrerad dumpfil eller en fullständig dumpfil) på en klustrad SQL Server eller en SQL Server som är värd för en instans av en AlwaysOn-tillgänglighetsgruppen, kan den klustrade SQL-servern eller AG växla över till en annan nod om dumpfilen tar för lång tid att slutföra. För att undvika möjlig redundans kan du använda följande inställningar innan du fångar dumpfilen och du kan återställa ändringen när en dumpfil har gjorts:

  • För grupperad SQL Server (FCI) högerklickar du på SQL Server-resursen i kluster administratören och väljer om resursen Miss lyckas, starta inte om på fliken principer .

  • För AG tillämpar du följande inställningar:

    • Öka session-timeout, till exempel 120 sekunder för alla repliker. Högerklicka på den replik du vill konfigurera i SQL Server Management Studio och klicka sedan på Egenskaper. Ändra session-timeout (SEK) till 120 sekunder. Mer information finns i ändra tids gräns period för session för en tillgänglighets replik (SQL Server).

    • Ändra "automatisk redundans" för alla repliker till "manuell redundans". I SQL Server Management Studio högerklickar du på replik, väljer Egenskaperoch ändrar sedan "Auto redundans" för alla repliker till "manuell redundans" på fliken Egenskaper . Mer information finns i ändra läget för tillgänglighets repliker (SQL Server).

    • Öka "LeaseTimeout" till 60 000 MS (60 Seconds) och ändra HealthCheckTimeout till 90 000 MS (90 sekunder). I kluster administratören högerklickar du på AG-resurs, väljer Egenskaperoch växlar sedan till fliken Egenskaper för att ändra båda inställningarna. Mer information finns i Konfigurera egenskaps inställningar för HealthCheckTimeout.

Mer information

Köra verktyget Sqldumper. exe manuellt

Kör verktyget Sqldumper. exe under kontexten för den mapp där SQL Server ursprungligen installerade verktyget. Installations Sök vägen för verktyget Sqldumper. exe är som standard: SQLServerInstallDrive: \Program\microsoft SQL Server\90\Shared\SQLDumper.exeNote SQLServerInstallDrive är en plats hållare för enheten där du installerade SQL Server 2005. Så här skapar du en dumpfil med Sqldumper. exe-verktyget:

  1. Öppna följande mapp: SQLServerInstallDrive: \Program\Microsoft SQL Server \nummer\SharedNotei den här mappsökvägen är en plats hållare för något av följande:

    • 140 för SQL Server 2017

    • 130 för SQL Server 2016

    • 120 för SQL Server 2014

    • 110 för SQL Server 2012

    • 100 för SQL Server 2008

    • 90 för SQL Server 2005

  2. Kontrol lera att filen DBGhelp. dll finns i den här mappen.

  3. Klicka på Start, klicka på Kör, Skriv cmdoch klicka sedan på OK.

  4. Skriv följande kommando i kommandotolken och tryck på RETUR: cd SQLServerInstallDrive:\Program Files\Microsoft SQL Server\number\SharedObs!I den här mappsökvägen är tal samma plats hållare som ändras med SQL Server-version enligt beskrivningen ovan.

  5. Om du vill skapa en viss typ av dumpfil skriver du motsvarande kommando i kommando tolken och trycker på RETUR:

    • Fullständig dumpfil

      Sqldumper. exe ProcessID 0 0x01100

    • Kraschdumpfil

      Sqldumper. exe ProcessID 0 0x0120

    • En kraschdumpfil som inkluderar indirekt refererat minne. Det här alternativet rekommenderas och används även av SQL Server när automatisk generering av minnes dum par körs.

      Sqldumper. exe ProcessID 0 0x0128

    • Filtrerad dumpfil

      Sqldumper. exe ProcessID 0 0x8100

    Obs! ProcessID är en plats hållare för process-ID: t för Windows-programmet som du vill skapa en dumpfil för.

Om verktyget Sqldumper. exe körs visas en dumpfil i mappen där verktyget är installerat. Dumpfilen som Sqldumper. exe-verktyget genererar har ett fil namns mönster som ser ut så här:

SQLDmprxxxx.mdmp I det här mönstret är xxxx ett ökande nummer som fastställs baserat på andra filer som har ett liknande fil namn i samma mapp. Om du redan har filer i mappen som har fil namn i det angivna mönstret kan du behöva jämföra datum och tid då filen skapades för att identifiera den fil som du vill använda.

Ytterligare information och överväganden

SQLDumper. exe finns främst för att generera minnes dum par för SQL Server-processen i scenarier där en minnes dumpning behövs för att lösa specifika problem (undantag, assert, icke-ledande schemaläggare, etc.). I sådana fall anropar SQL Server SQLDumper. exe för att generera en minnes dumpning av processen. Minnesdumpen lagras i en sökväg som har kon figurer ATS i SQL Server Configuration Manager med en standard katalog för MSSQL\LOG\.  I vissa fall kan dumpnings storleken vara för stor, till exempel genom att göra följande: 

  1. Öppna SQL Server Configuration Manager

  2. Leta reda på SQL-servern under undersökning under SQL Server-tjänster

  3. Högerklicka på den, Välj Egenskaper och gå till fliken Avancerat

  4. Ändra till önskad sökväg till den dumpade katalogen och klicka på OK.

  5. Starta om SQL Server (när det är möjligt) för den nya inställningen.

När Sqldumper. exe-verktyget används manuellt för att skapa en dumpfil för ett Windows-program kan dumpfilen vara så stor som minnet som Windows-programmet använder just nu. Kontrol lera att det finns tillräckligt med disk utrymme på enheten där Sqldumper. exe-verktyget skriver dumpfilen-filen. Du kan ange i vilken katalog du vill att Sqldumper. exe ska skriva dumpfilen. Katalogen måste redan finnas innan du kör verktyget Sqldumper. exe. I annat fall Miss lyckas verktyget Sqldumper. exe. Använd inte UNC-sökväg som plats för dumpfilen. Här följer ett exempel på hur du anger en dumpfil för dumpfilen-filen:

  1. Klicka på Start, klicka på Kör, Skriv cmdoch klicka sedan på OK.

  2. Skriv följande kommando i kommandotolken och tryck på RETUR:

    cd SQLServerInstallDrive:\Program Files\Microsoft SQL Server\number\Shared

    Obs! I denna mappsökväg är tal en plats hållare för något av följande:

    • 140 för SQL Server 2017

    • 130 för SQL Server 2016

    • 120 för SQL Server 2014

    • 110 för SQL Server 2012

    • 100 för SQL Server 2008

    • 90 för SQL Server 2005

  3. Skriv följande kommando i kommando tolken och tryck på RETUR: Sqldumper.exe ProcessID 0 0x0128 0 MdumpPathObs! MdumpPath är en plats hållare för katalogen där du vill att Sqldumper. exe-verktyget ska skriva dumpfilen. Filen sparas som standard i den aktuella mappen.

Om du anger en fullständig dumpfil eller en filtrerad dumpfil som ska genereras kan det ta flera minuter att skapa dumpfilen i verktyget Sqldumper. exe. Tiden beror på följande variabler:

  • Mängden minne som verktyget Sqldumper. exe använder för närvarande

  • Hastigheten på den enhet som verktyget skriver dumpfilen för

Under den här tiden bearbetar verktyget Sqldumper. exe inte kommandon. Du märker att servern inte svarar. Dessutom kan en failover för klustret uppstå. För att köra verktyget Sqldumper. exe måste du logga in i Windows på något av följande sätt:

  • Använd ett konto som är medlem i gruppen Administratörer på datorn.

  • Använd samma användar konto som SQL Server-tjänsten.

För att Sqldumper. exe ska fungera via fjärr skrivbord eller med Terminal Services måste du starta fjärr skrivbord eller Terminal Services i konsol läge. Om du till exempel vill starta fjärr skrivbord i konsol läge klickar du på Start, klickar på Kör, skriver Mstsc/Consoleoch klickar sedan på OK. Observera att om mål servern kör Windows 2000 ignoreras alternativet /console tyst. Du kan ansluta till servern via fjärr skrivbord. Men du kommer inte att använda konsolsessionen.

Om du märker att ingen dumpfil har genererats i den aktuella mappen efter att du har kört verktyget Sqldumper. exe, läser du den information som verktyget har skapat på kommando raden för att försöka avgöra orsaken till felet. Den här informationen är också loggad i filen Sqldumper_errorlog. log i den aktuella katalogen. Följande är två möjliga fel meddelanden och deras orsaker:

Meddelande 1

OpenProcess misslyckades 0x57-parametern är felaktig

Ett ogiltigt process-ID skickades till verktyget Sqldumper. exe.

Meddelande 2

Ogiltigt värde för tråd-ID-<ogiltigt parameter> parameter fel

En ogiltig parameter skickades till verktyget Sqldumper. exe. Om ett fel meddelande som liknar något av följande visas kan du bortse från det här meddelandet:

Okänd callback-typ under Minidump 6 Okänd callback-typ under Minidump 7

Påverkan av dumpar

När en dump av en användarläges process har begärts (enligt beskrivningen i den här artikeln, för att få en kontrast med operativ systemets kernel-dum par som inte ingår i omfattningen), är mål processen (här SQLServer. exe) helt fryst för varaktigheten för att serialisera dumpen till dess filmål.

Fryst innebär att det inte går att bearbeta en användares begäran eller bevarar en intern åtgärd, inklusive en funktion för resurs avsökning, som implementering av Windows-Klusterens IsAlive och LooksAlive (mer information om hur du hanterar den här situationen i kluster växlings funktionen och Sqldumper. exe). Alla tids gräns förlitar sig på väggens Klock tid kan också bli uppkopplade som en följd av låset.

Som kan härledas från den föregående instruktionen är frysens längd därför den kritiska faktorn här och den är huvudsakligen av följande:

  • Den valda dumpnings typen

  • Storleken på SQL Server-processen i minnet, som när det gäller en enda aktiv instans med standard parametrar, är ofta nära serverns totala fysiska RAM.

  • Prestandan för disken som används som mål för dumpningen.

Dessutom kan storlekendumpfilen på disken planeras för, särskilt om flera dum par är en möjlig och om stora, icke-standard typer av dumpning är markerade. Kontrol lera att du läser avsnittet "dump-typer" för att få veta vad som är förväntat. Som standard skapar vissa dumpnings metoder dumpen i SQL Server instance-\Log-mappen, som, i standard för enkel konfiguration, också skulle vara system disk och data + log disk för SQL Server. Att sätta den här disken i mättnad får stor inverkan på SQL Server och/eller system tillgänglighet.

Tre viktiga förbättringar har lagts till i den senaste versionen av SQL Server för att minska storleken på dumpfilen och/eller tiden för att generera dumpning:

  • Funktionen för bitmapps filtrering

  • Eliminera upprepade dumpningar på samma problem

  • Förkortad utskrift i logg filen

Bitmappscachning: förbättrad, filtrerad dumpnings hastighet och förminskad storlek har uppnåtts på grund av en ny Bitmap-filtrering som har lagts till i sql server 2019 och sql server 2017. SQL Server tilldelar en bitmapp som håller koll på minnes sidor så att de utesluts från en filtrerad dump. Sqldumper. exe läser upp bitmapp och filtrerar bort sidor utan att behöva läsa andra minnes hanterares metadata. Följande meddelanden i SQL Server återställs när bitmappen är aktive rad eller inaktiv: "undantag för sida är aktive rad." och "utesluten sida är inaktive rad."

SQL Server 2016

  • Från och med SQL Server 2016 SP2 CU13 är aktiverat som standard.

SQL Server 2017

  • Det här är inte tillgängligt i RTM genom CU15

  • I SQL Server 2017 CU16 du aktivera funktionen Bitmap-filtrering via T8089 och inaktiverar den genom att stänga av T8089

  • Från och med SQL Server 2017 CU20 är standardinställningen aktiverat. Spårnings flaggan T8089 gäller inte längre och ignoreras om den är aktive rad. Filtret för bitmappar kan inaktive ras via T8095.

SQL Server 2019

Det här är aktiverat som standard i SQL Server 2019 RTM. Den kan inaktive ras via T8095.

Uteslutning av upprepade dumpningar på samma problem: Repeated minnes dum par på samma problem har nu eliminerats. Med en stackdump håller SQL-motorn reda på om ett undantag redan har inträffat och inte kommer att skapa en ny minnes dumpning om det redan finns en. Detta gäller åtkomst överträdelser, stack spill, assert-och index skador. Detta minskar avsevärt mängden disk utrymme som används av minnes dumpning och det går inte att låsa processen tillfälligt för att skapa en dump. Detta lades till i SQL Server 2019.

Förkortad utskrift i logg filen:Det innehåll som genereras i SQL Server-felet från en enda minnes dumpning kan inte vara överbelastat, men det går också långsamt att generera en minnes dumpning på grund av att all den här informationen hade serialiserats till ett text format i fel loggen. I SQL Server 2019 har innehållet som lagras i logg filen när dump-genereringen minskat avsevärt och det kan se ut så här:

Datetime SPIDSPID * * dumpa tråd-SPID = 0, EC = 0x0000015C7169BF40

Datetime SPIDSPID *

Datetime SPIDSPID * användarinitierad stackdump. Det här är inte en server undantags dumpning.

Datetime SPIDSPID *

Datetime SPIDSPID -0x00000000788399E5 för dumpningen är

Datetime SPIDSPID extern dumpfil 0x20000001.

Den externa dumpnings processen gav inga fel.

Tidigare SQL Server skulle skriva ut information för varje session/tråd när en manuell dumpning initierades av användaren. 

Dumpnings typer

De metoder som beskrivs kan generera tre olika typer av dum par: Mini-dumpar, fullständiga dumpar och filtrerade dum par.

Mini-dum par med refererat minne är en ögonblicks bild av alla aktiva trådar av processen ("tråd stackar"), tillsammans med ett begränsat urval av det minne som refereras av tråd stackarna och några andra viktiga processer/tråd data. Det är vanligt vis ett fåtal MB stora gånger och det är väldigt snabbt att generera (från färre än en sekund till några sekunder). Ännu större server system (med hundratals CPU indirekt kraft antal trådar i SQL Server process) överskrider 20-30 MB: storleken på en mini-dump växer inte i SQL Server-processen. Den här minnesdumpen är den standard typ som används av SQL Server när du skapar minnes dum par automatiskt för undantag, schemaläggnings problem, spärr problem etc.

Observera att SQL Server som en del av den inbyggda Instrumentation skapar automatiserade mini-dum par i vissa särskilda situationer. Denna åtgärd betraktas därför som säker för att SQL Server kan utlösa den automatiskt när det behövs.

Fullständiga dum par är en fullständig kopia av det aktiva mål process utrymmet. Detta skulle därför omfatta alla tråd tillstånd, alla process tilldelade minnen och alla inlästa moduler. Alla dum par har därför en storlek som är ungefär likadan som en SQL Server-process som i sin tur kan vara nästanlika stor som det totala RAM-minnet. På stora servrar som är avsedda för en enda SQL Server-instans kan det innebära en fil som är flera hundra GB eller mer. Needlessly att anta att en sådan fil tar lång tid att generera och gör därför att prolongated fryses. Disk prestanda för fil mål för dump är en viktig driv rutin för att låsa tiden. Observera att den här typen av dumpning sällan används för SQL Server idag, som nästa typ av Beskrivning förklarar.

Filtrerade dum par: eftersom RAM-storleken för typiska servrar med SQL Server har ökat ständigt, blir full dum par mer och mer unwieldy. Filtrerade dum par har därför implementerats: de är en delmängd av fullständiga dumpar, där stora minnes strukturer som gäller för SQL Server inte purposefully ignoreras och inte serialiseras till disken eftersom de inte får någon felsöknings information (vanligt vis data-och index sidor). som Hekaton data sidor och log pool-minne). Det här resulterar i en fil som är mindre än en fullständig dumpning och som inte nästan är användbar, och detta har ersatts med alternativet Fullständig dumpning som önskat i en mängd olika situationer där mini-dum par inte räckit. Storleken minskar jämfört med den fulla dumpningen, men det är ändå en ganska stor fil som ofta är 30-60% av process storleken för SQL Server, så det är bäst att planera för en möjlig storlek så stor som en full dumpning som ett sämst alternativ. Observera att en filtrerad dumpning kanske inte behöver bli snabbare för att generera än en fullständig dumpning i varje enskilt fall: det är en fråga om de vinster som är knutna till ett IO-nummer överskrider den tid som krävs för att implementera filter logiken (så att disk hastighet och processor/RAM-hastighet påverkar detta).

Du kan använda verktyget Sqldumper. exe för att skapa en dumpfil på begäran för alla Microsoft Windows-program. Du kan till exempel generera en dumpfil för att felsöka ett program problem när en dator som kör Microsoft SQL Server inte svarar på användarnas förfrågningar. En dumpfil kan vara en mini-dumpfil eller en fullständig dumpfil. En filtrerad dumpfil är bara tillämpbar och meningsfull i kontexten för SQL Server. Men du kan inte använda Sqldumper. exe-verktyget för allmän fel sökning. Mer information om allmän fel sökning finns på följande Microsoft-webbplats:

http://www.microsoft.com/whdc/devtools/debugging/default.mspx

SQL Server-processen anropar verktyget Sqldumper. exe internt för att skapa en dumpfil när det uppstår undantag i processen. SQL Server skickar flaggor till verktyget Sqldumper. exe. Du kan använda spårnings flaggor för att ändra flaggorna som SQL Server skickar till verktyget i kontexten för ett undantag eller kontexten. Dessa spårnings flaggor ligger i intervallet från 2540 till 2559. Du kan använda de här spårnings flaggorna för att generera vissa typer av dumpfiler. Till exempel:

  • Spårnings flagga 2551: skapar en filtrerad minnesdump

  • Spårnings flagga 2544: skapar en fullständig minnes dumpning

  • Spårnings flagga 8026: SQL Server tar bort en dump-Utlös ande händelse när en dump har genererats

Om två eller fler spårnings flaggor är aktiva används det alternativ som anger den största minnes dumpningen. Om trace flaggor 2551 och 2544 används skapar SQL Server en fullständig minnesdump.

Skaffa en process-ID för Microsoft Windows-program

För att skapa en dumpfil med Sqldumper. exe-verktyget måste du ha process-ID för Windows-programmet som du vill generera en dumpfil för. Följ de här stegen för att få process-ID:

  1. Tryck på CTRL + ALT + DELETE och klicka sedan på aktivitets hanteraren.

  2. I dialog rutan aktivitets hanteraren i Windows klickar du på fliken processer .

  3. Klicka på Välj kolumnerVisa -menyn.

  4. I dialog rutan Välj kolumner markerar du kryss rutan PID (process identifierare) och klickar sedan på OK.

  5. Observera process-ID: t för Windows-programmet som du vill skapa en dumpfil för. Om du har en SQL Server-tillämpning märker du process-ID: t för filen Sqlservr. exe.

  6. Stäng aktivitets hanteraren.

Du kan också få reda på process-ID: n för SQL Server-programmet som körs på datorn med hjälp av SQL Server Error log-filen. I SQL Server-fellogg filen ser du till exempel följande:

Date/Time Server Microsoft SQL Server 2005-9.00.1399.06 (Intel x86) Datum/tid Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition på Windows NT 5,2 (version 3790: Service Pack 1) Datum/tid Server (c) 2005 Microsoft Corporation. Date/Time Server med ensam rätt. Date/Time Server Server processens ID är 3716.

Det nummer som visas efter att Server process-ID är process-ID för Sqlservr. exe-processen.

Failover för kluster och verktyget Sqldumper. exe

I kluster failover-scenarion kan SQL Server-resurs-DLL nu erhålla en dumpfil innan failover sker. När SQL Server-resursens DLL-fil avgör att en SQL Server-resurs har misslyckats, använder DLL-filen för SQL Server-resursen Sqldumper. exe för att få en dumpfil för SQL Server-processen. För att vara säker på att Sqldumper. exe har genererat dumpfilen måste du ange följande tre egenskaper som förutsättningar:

  • SqlDumperDumpTimeOut En användardefinierad timeout. Resurs-DLL-filen väntar på att dumpfilen ska slutföras innan resursen DLL stoppar SQL Server-tjänsten.

  • SqlDumperDumpPath Platsen där Sqldumper. exe-verktyget genererar dumpfilen.

  • SqlDumperDumpFlags Flaggor som verktyget Sqldumper. exe använder.

Om någon av egenskaperna inte är angiven kan inte Sqldumper. exe-verktyget generera dumpfilen. Ett varnings meddelande kommer att loggas både i händelse loggen och i kluster loggen när resursen ansluts.

För SQL Server 2012 och senare

Du kan använda kommandot ALTER SERVER CONFIGURATION (T-SQL) för att ändra dessa egenskaper. Till exempel:

ALTER SERVER CONFIGURATION set CLUSTER egenskapen SqlDumperDumpTimeOut = 0;

ALTER SERVER CONFIGURATION set CLUSTER egenskapen SqlDumperDumpPath = ' C:\Temp\ ';

ALTER SERVER CONFIGURATION set-egenskapen för REDUNDANSKLUSTER SqlDumperDumpFlags = 296;

Du kan också använda PowerShell-skript. Till exempel för en namngiven instans SQL2017A:

Get-ClusterResource-Name "SQL Server (SQL2017AG)" | Set-ClusterParameter "SqlDumperDumpPath"-värde "C:\Temp"

Get-ClusterResource-Name "SQL Server (SQL2017AG)" | Set-ClusterParameter "SqlDumperDumpFlags"-värde 296

Get-ClusterResource-Name "SQL Server (SQL2017AG)" | Set-ClusterParameter "SqlDumperDumpTimeOut"-värde 0

Om du vill verifiera att inställningarna har tillämpats kan du köra det här PowerShell-kommandot:

Get-ClusterResource-Name "SQL Server (SQL2017AG)" | Get-ClusterParameter

För SQL Server 2008/2008 R2 eller Windows 2012 och tidigare

Så här ställer du in egenskaperna för Sqldumper. exe-egenskaper för kluster-failover:

  1. Klicka på Start, klicka på Kör, Skriv cmdoch klicka sedan på OK.

  2. Skriv motsvarande kommando i kommando tolken för varje egenskap och tryck sedan på RETUR:

    • Egenskapen SqlDumperDumpFlags Om du vill ange egenskapen SqlDumperDumpFlags för en viss typ av dumpfil skriver du motsvarande kommando i kommando tolken och trycker på RETUR:

      • All fullständig dumpfil-tråd

        • Standard instans

          kluster resursen "SQL Server"/priv SqlDumperDumpFlags = 0x01100

        • Namngiven instans

          kluster resursen "SQL Server (INSTANCE1)"/priv SqlDumperDumpFlags = 0x01100

      • All tråd-mini-dumpfil

        • Standard instans

          kluster resursen "SQL Server"/priv SqlDumperDumpFlags = 0x0120

        • Namngiven instans

          kluster resursen "SQL Server (INSTANCE1)"/priv SqlDumperDumpFlags = 0x0120

      • Filtrerat alla tråd dum par

        • Standard instans

          kluster resursen "SQL Server"/priv SqlDumperDumpFlags = 0x8100

        • Namngiven instans

          kluster resursen "SQL Server (instance1)"/priv SqlDumperDumpFlags = 0x8100

    • Egenskapen SqlDumperDumpPath kluster resursen "SQL Server"/priv SqlDumperDumpPath = DirectoryPathNote DirectoryPath är en plats hållare för katalogen där dumpfilen skapas och ska anges inom citat tecken ("").

    • Egenskapen SqlDumperDumpTimeOut kluster resursen "SQL Server"/priv SqlDumperDumpTimeOut = timeoutför attantecknatimeout är en plats hållare för timeout i millisekunder (MS). Hur lång tid det tar att skapa en dumpfil för en SQL Server-process beror på dator konfigurationen. För en dator med mycket minne kan tiden vara signifikant. Använd verktyget Sqldumper. exe för att skapa en dumpfil manuellt för att få en uppskattning av hur lång tid processen tar. De giltiga värdena för egenskapen SqlDumperDumpTimeOut är från 10 000 till MAXDWORD. MAXDWORD representerar det högsta värdet i intervallet för DWORD-datatypen (4294967295).

Om du vill kontrol lera att inställningarna har Aktiver ATS kan du köra följande kommando: cluster resource "SQL Server" /priv " Så här tar du bort egenskaperna för Sqldumper. exe-egenskaper för kluster-failover:  

  1. Klicka på Start, klicka på Kör, Skriv cmdoch klicka sedan på OK.

  2. För en viss egenskap skriver du motsvarande kommando i kommando tolken och trycker på RETUR:

    • Egenskapen SqlDumperDumpFlags

      • Standard instans kluster resursen "SQL Server"/priv: SqlDumperDumpFlags/usedefault

      • Namngiven instans kluster resursen "SQL Server (INSTANCE1)"/priv: SqlDumperDumpFlags/usedefault

    • Egenskapen SqlDumperDumpPath

      • Standard instans kluster resursen "SQL Server"/priv: SqlDumperDumpPath/usedefault

      • Namngiven instans kluster resursen "SQL Server (INSTANCE1)"/priv: SqlDumperDumpPath/usedefault

    • Egenskapen SqlDumperDumpTimeOut

      • Standard instans kluster resursen "SQL Server"/priv: SqlDumperDumpTimeOut/usedefault

      • Namngiven instans kluster resursen "SQL Server (INSTANCE1)"/priv: SqlDumperDumpTimeOut/usedefault

Så här använder du DBCC STACKDUMP

Filen DBCC STACKDUMP med kommandot kan du skapa en minnes dumpning i logg katalogen för SQL Server-instansen. Kommandot kommer som standard att skapa en MiniDump med alla trådar som har begränsad storlek och är tillräckligt för att återspegla tillståndet för SQL Server-processen. Kör bara följande kommando i en SQL Server-klient:

DBCC STACKDUMP

Om du vill aktivera den här metoden för att skapa en filtrerad dump aktiverar du spårnings flaggor 2551 med följande kommando:

dbcc traceon(2551, -1) 
go

dbcc stackdump

Använd spårnings flaggan 2544 för att skapa en fullständig dumpning.

Obs! när du har skaffat dumpfilen bör du inaktivera spårnings flaggan genom att använda följande kommando för att undvika att oavsiktligt uppgradera alla SQL Server Self-Diagnostic-minidumps till större dump:

DBCC TRACEOFF (TraceNumber, -1);   
GO

Där tracenumber är den spårnings flagga du tidigare aktiverat som 2551 eller 2544.

Om du är osäker på vilken spårnings flagga som är aktiv kan du köra:

DBCC TRACESTATUS(-1)

En tom resultat uppsättning indikerar att inga traceflag är aktiva. Om 2551 fortfarande är aktivt ser du:

TraceFlag status för global session

--------- ------ ------ -------

2551 1 1 0

Obs! TraceFlags som aktive ras med DBCC TRACEON återställs (tas bort) efter en omstart av tjänsten.

Så här använder du ett PowerShell-skript för att skapa en dumpfil med SQLDumper. exe

  • Spara följande kod som en PS1-fil, till exempel SQLDumpHelper. ps1:

  • Kör det från kommando tolkensom administratör genom att använda följande kommando: Powershell.exe -File SQLDumpHelper.ps1

  • Eller kör den från Windows PowerShell-konsolen och körsom administratör genom att använda följande kommando: .\SQLDumpHelper.ps1

Obs! Om du aldrig har kört PowerShell-skript på systemet kan du få följande fel meddelande:

Fil... SQLDumpHelper. ps1 kan inte läsas in eftersom du har inaktiverat skript i det här systemet.

Du måste aktivera möjligheten att köra dem på följande sätt:

  1. Starta Windows PowerShell-konsolen med alternativet Kör som administratör. Endast medlemmar i gruppen Administratörer på datorn kan ändra körnings principen.

  2. Aktivera osignerade skript med följande kommando: Set-ExecutionPolicy RemoteSigned

    Obs! med den här åtgärden kan du köra osignerade skript som du skapar på din lokala dator och signerade skript från Internet.

$isInt = $false $isIntValDcnt = $false $isIntValDelay = $false $SqlPidInt = 0 $NumFoler = "" $OneThruFour = "" $SqlDumpTypeSelection = "" $SSASDumpTypeSelection = "" $SSISDumpTypeSelection = "" $SQLNumfolder = 0 $SQLDumperDir = "" $OutputFolder = "" $DumpType = "0x0120" $ValidPid $SharedFolderFound = $false $YesNo = "" $ProductNumber = "" $ProductStr = ""

Skriv-värd "" Write-Host "' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-* * * * * * * * * *" Write-Host "det här manuset hjälper dig att skapa en eller flera dumpningar av SQL Server-minnet" Skriv-värd "den innehåller alternativ på:"             -rikta SQL Server-process (om det är mer än en)             -typ av minnesdump             -antal och tidsintervall (om det är flera minnes dum par) Du kan avbryta det här skriptet med CTRL + C " Write-Host "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"

#check för administratörs rättigheter #debugging verktyg som SQLDumper. exe kräver administratörs behörighet för att skapa en minnes dumpning

om (-inte ([Security. kapital. WindowsPrincipal] [Security. huvud. WindowsIdentity]:: GetCurrent ()). IsInRole ([Security. princip huvud. WindowsBuiltInRole]:: administratör)) {      Skriv-varning "administratörs behörighet krävs för att skapa en minnes dumpning!" nVälj kör skriptet igen som administratör! "      #break }

#what produkt vill du skapa en minnes dumpning while (($ProductNumber-Ne "1")-and ($ProductNumber-Ne "2")-och ($ProductNumber-Ne "3")-och ($ProductNumber-Ne "4")-och ($ProductNumber-Ne "5")) {     Skriv-värd "vilken produkt vill du skapa en minnes dumpning av?"-ForegroundColor gul     Skriv-värd "1) SQL Server"     Skrivning-värd "2) SSAS (Analysis Services)"     Skriv-Host "3) SSIS (integrerings tjänster)"     Skriv-värd "4) SSRS (repor ting Services)"     Skriv-Host "5) SQL Server Agent"     Skriv-värd ""     $ProductNumber = Read-Host "Skriv 1-5>"

    om (($ProductNumber-Ne "1")-och ($ProductNumber-Ne "2")-och ($ProductNumber-Ne "3")-och ($ProductNumber-Ne "4")-och ($ProductNumber-Ne "5"))     {         Skriv-värd ""         Skriv-värd "Skriv ett giltigt nummer från listan ovan!"         Skriv-värd ""         Start-vilo-300     } }

om ($ProductNumber-EQ "1") {     $SqlTaskList = tasklist/SVC/FI "ImageName EQ Sqlservr *"/FO CSV | ConvertFrom-CSV     $ProductStr = "SQL Server" } ElseIf ($ProductNumber-EQ "2") {     $SqlTaskList = tasklist/SVC/FI "ImageName EQ msmdsrv *"/FO CSV | ConvertFrom-CSV     $ProductStr = "SSAS (Analysis Services)" } ElseIf ($ProductNumber-EQ "3") {     $SqlTaskList = tasklist/SVC/FI "ImageName EQ msdtssrvr *"/FO CSV | ConvertFrom-CSV     $ProductStr = "SSIS (integrerings tjänster)" } ElseIf ($ProductNumber-EQ "4") {     $SqlTaskList = tasklist/SVC/FI "ImageName EQ reportingservicesservice *"/FO CSV | ConvertFrom-CSV     $ProductStr = "SSRS (repor ting Services)" } ElseIf ($ProductNumber-EQ "5") {     $SqlTaskList = tasklist/SVC/FI "ImageName EQ SQLAgent *"/FO CSV | ConvertFrom-CSV     $ProductStr = "SQL Server Agent" }

om ($SqlTaskList. Count-EQ 0) {     Write-Host "det finns curerntly inga instanser av $ProductStr. Avslutar... "-ForegroundColor grönt     jämvikt }

Om du #if flera SQL Server-instanser kan du få användaren att mata in PID för önskat SQL Server om ($SqlTaskList. count-gt 1) {     Skriv-värd "fler än en $ProductStr instans hittades."

    $SqlTaskList | Select-Object PID, "Bildnamn", tjänster | Ut-Host

    #check in och kontrol lera att det är ett giltigt heltal     while ((($isInt-EQ $false)-eller ($ValidPid-EQ $false))     {         Skriv-värd "Ange produkt-ID för önskad SQL-tjänst från lista ovan"-ForegroundColor gul         $SqlPidStr = Read-Host ">"      pröva                 $SqlPidInt = [Convert]:: ToInt32 ($SqlPidStr)                 $isInt = $true             }

        Catch [FormatException]             {                  Write-Host "värdet som angavs för PID '", $SqlPidStr, "är inte ett heltal"             }      #validate detta ID finns i listan         för ($i = 0; $i-lt $SqlTaskList. Count; $i + +)         {             IF ($SqlPidInt-EQ [int] $SqlTaskList. PID [$i])             {                 $ValidPid = $true                 jämvikt             }             person             {                 $ValidPid = $false             }         }      }   

     Write-Host "med PID = $SqlPidInt för att generera en $ProductStr minnes dumpning"-ForegroundColor grönt     Skriv-värd ""      } annars #if du bara en SQL Server/SSAS i rutan, gå hit {     $SqlTaskList | Select-Object PID, "Bildnamn", tjänster | Ut-Host     $SqlPidInt = [Convert]:: ToInt32 ($SqlTaskList. PID)   Write-Host "med PID =", $SqlPidInt "för att skapa en $ProductStr minnes dumpning"-ForegroundColor grönt     Skriv-värd "" }

#dump typ

om ($ProductNumber-EQ "1") #SQL serverns minnes dumpning {     #ask vilken typ av minnes dumpning för SQL Server     while (($SqlDumpTypeSelection-Ne "1")-and ($SqlDumpTypeSelection-Ne "2")-och ($SqlDumpTypeSelection-Ne "3")-och ($SqlDumpTypeSelection-Ne "4"))     {         Skriv-värd "vilken typ av minnes dumpning vill du skapa?"-ForegroundColor gul         Skriv-värd "1) mini-dump"         Write-Host "2) mini-dump med refererat minne"-NoNewLine; Write-Host "(rekommenderas)"         Skriv-Host "3) filtrerad dump"-NoNewline; Write-Host "(rekommenderas inte)"-ForegroundColor Red         Skriv-värd "4) fullständig dumpning"-NoNewline; Write-Host "(Använd ej på produktions system!)" -ForegroundColor röd         Skriv-värd ""         $SqlDumpTypeSelection = Read-Host "Skriv 1-4>"

        om (($SqlDumpTypeSelection-Ne "1")-och ($SqlDumpTypeSelection-Ne "2")-och ($SqlDumpTypeSelection-Ne "3")-och ($SqlDumpTypeSelection-Ne "4"))         {             Skriv-värd ""             Write-Host "Ange en giltig typ av minnes dumpning!"             Skriv-värd ""             Start-vilo-300         }     }

    Skriv-värd ""

    Växla ($SqlDumpTypeSelection)     {         "1" {$DumpType = "0x0120"; brytning}         "2" {$DumpType = "0x0128"; brytning}         "3" {$DumpType = "0x8100"; brytning}         "4" {$DumpType = "0x01100"; brytning}         standard {"0x0120"; brytning}

    }

} ElseIf ($ProductNumber-EQ "2") #SSAS dumpning {

    #ask vilken typ av SSAS-minnesdump     while (($SSASDumpTypeSelection-Ne "1")-och ($SSASDumpTypeSelection-Ne "2"))     {         Skriv-värd "vilken typ av minnes dumpning vill du skapa?"-ForegroundColor gul         Skriv-värd "1) mini-dump"         Skriv-värd "2) fullständig dumpning"-NoNewline; Write-Host "(Använd ej på produktions system!)" -ForegroundColor röd         Skriv-värd ""         $SSASDumpTypeSelection = Read-Host "Skriv 1-2>"

        om (($SSASDumpTypeSelection-Ne "1")-och ($SSASDumpTypeSelection-Ne "2"))         {             Skriv-värd ""             Write-Host "Ange en giltig typ av minnes dumpning!"             Skriv-värd ""             Start-vilo-300         }     }

    Skriv-värd ""

    Växla ($SSASDumpTypeSelection)     {         "1" {$DumpType = "0x0"; brytning}         "2" {$DumpType = "0x34"; brytning}         standard {"0x0120"; brytning}

    } }

ElseIf ($ProductNumber-EQ "3"-eller $ProductNumber-EQ "4"-eller $ProductNumber-EQ "5") #SSIS/SSRS/SQL {

    #ask vilken typ av SSIS minnes dumpning     while (($SSISDumpTypeSelection-Ne "1")-och ($SSISDumpTypeSelection-Ne "2"))     {         Skriv-värd "vilken typ av minnes dumpning vill du skapa?"-ForegroundColor gul         Skriv-värd "1) mini-dump"         Skriv-värd "2) fullständig dumpning"         Skriv-värd ""         $SSISDumpTypeSelection = Read-Host "Skriv 1-2>"

        om (($SSISDumpTypeSelection-Ne "1")-och ($SSISDumpTypeSelection-Ne "2"))         {             Skriv-värd ""             Write-Host "Ange en giltig typ av minnes dumpning!"             Skriv-värd ""             Start-vilo-300         }     }

    Skriv-värd ""

    Växla ($SSISDumpTypeSelection)     {         "1" {$DumpType = "0x0"; brytning}         "2" {$DumpType = "0x34"; brytning}         standard {"0x0120"; brytning}

    } }

# Sqldumper. exe PID 0 0x0128 0 c:\Temp #output mapp while ($OutputFolder-EQ ""-eller! ( Test-Path-$OutputFolder)) {     Skriv-värd ""     Skriv-värd "var vill du att minnes dumpningen (utdatafilen)?-ForegroundColor gul     $OutputFolder = Read-Host "Ange en målmapp utan citat tecken (till exempel C:\MyTempFolder eller C:\Mina)"     om ($OutputFolder-EQ ""-eller! ( Test-Path-$OutputFolder))     {         Skriv-värd "'" $OutputFolder "' är inte en giltig mapp. Ange en giltig mapplats "-ForegroundColor gul     } }

#find den högsta versionen av SQLDumper. exe på datorn $NumFolder = dir "c:\Program Files\microsoft SQL server\1 *" | Select-objekt @ {Name = "DirNameInt"; uttryck = {[int] ($ _. Namn)}}, Name, mode | Where-objekt läge-matcha "da *" | Sortera-objekt DirNameInt-fallande

för ($j = 0;($j-lt $NumFolder. Count); $j + +) {     $SQLNumfolder = $NumFolder. DirNameInt [$j] #start med det högsta värdet från sorterade mappnamn-senaste versionen av dumparen     $SQLDumperDir = "C:\Program\Microsoft SQL Server \" + $SQLNumfolder. ToString () + "\Shared\"     $TestPathDumperDir = $SQLDumperDir + "Sqldumper. exe"      $TestPathResult = testsökväg-$SQLDumperDir      IF ($TestPathResult-EQ $true)     {         jämvikt     }  }

#build SQLDumper. exe, till exempel (Sqldumper. exe 1096 0 0x0128 0 c:\Temp\)

$cmd = "$ ([char] 34)" + $SQLDumperDir + "Sqldumper. exe $ ([char] 34)" $arglist = $SqlPidInt. ToString () + "0" + $DumpType + "$0 ([char] 34)" + $OutputFolder + "$ ([char] 34)" Kommandot Write-Host "för dump generation:", $cmd, $arglist-ForegroundColor grönt

#do-ett avsnitt med flera dum par Skriv-värd "" Write-Host "det här verktyget kan generera flera minnes dum par vid ett visst intervall" Skriv-Host "vill du samla flera minnes dum par?-ForegroundColor gul

#validate Y/N-inmatning while (($YesNo-Ne "y")-och ($YesNo-Ne "n")) {     $YesNo = Read-Host "Skriv Y eller N>"

    om (($YesNo-EQ "y")-eller ($YesNo-EQ "n"))     {         jämvikt     }     person     {         Write-Host "inte ett giltigt svar för" Y "eller" N "     } }

#get inmatning på hur många dum par och hur ofta om ($YesNo-EQ "y") {     while ((($isIntValDcnt-EQ $false))         {             Skriv-värd "hur många dum par vill du skapa för den här SQL-servern?"-ForegroundColor gul             $DumpCountStr = Read-Host ">"      pröva                     $DumpCountInt = [Convert]:: ToInt32 ($DumpCountStr)                     $isIntValDcnt = $true                 }

            Catch [FormatException]                 {                      Write-Host "värdet som angavs för dump Count '", $DumpCountStr, "' är inte ett heltal"                 }         }

    while ((($isIntValDelay-EQ $false))         {             Skriv-värd hur ofta (i sekunder) vill du skapa minnes dum par?-ForegroundColor gul             $DelayIntervalStr = Read-Host ">"      pröva                     $DelayIntervalInt = [Convert]:: ToInt32 ($DelayIntervalStr)                     $isIntValDelay = $true                 }

            Catch [FormatException]                 {                      Write-Host "det värde som anges för frekvens (i sekunder) '", $DelayIntervalStr, "' är inte ett heltal"                 }         }

    Skrivning-värd "generering $DumpCountInt minnes dum par vid ett $DelayIntervalStr sekunder"-ForegroundColor grönt

    #loop att generera flera dumpar         $cntr = 0     while ($true)     {         Start-process-sökvägen $cmd-vänta-verb runAs-ArgumentList $arglist         $cntr + +

        Write-Host "genererad $cntr minnes dumpning."-ForegroundColor grönt

        om ($cntr-ge $DumpCountInt)             {                 jämvikt             }         Start-sömn-$DelayIntervalInt     }

    #print vilka filer som finns i mappen utdata     Skriv-värd ""     Skriv-värd "här är alla minnes dum par i utdatafilen" $OutputFolder ""-ForegroundColor grönt     $MemoryDumps = $OutputFolder + "\SQLDmpr *"     Get-ChildItem-Path $MemoryDumps

    Skriv-värd ""     Write-Host "processen Complete" }

annars #produce bara en enda dumpning {     Start-process-sökvägen $cmd-vänta-verb runAs-ArgumentList $arglist

    #print vilka filer som finns i mappen utdata     Skriv-värd ""     Skriv-värd "här är alla minnes dum par i utdatafilen" $OutputFolder ""-ForegroundColor grönt     $MemoryDumps = $OutputFolder + "\SQLDmpr *"     Get-ChildItem-Path $MemoryDumps

    Skriv-värd ""     Write-Host "processen Complete" }

Skriv-värd "för fel och slut för ande status, Läs SQLDUMPER_ERRORLOG. log som skapades av SQLDumper. exe i mappen utdatafil $OutputFolder. ' Eller om SQLDumper. exe inte gick att leta i den mapp som du kör skriptet i "

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×