Het hulpprogramma Sqldumper.exe gebruiken om een dumpbestand te genereren in SQL Server
Dit artikel bevat algemene richtlijnen voor het hulpprogramma Sqldumper.exe dat is opgenomen in SQL Server. Dit hulpprogramma wordt gebruikt om verschillende soorten dumpbestanden te genereren.
Oorspronkelijke productversie: SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
Oorspronkelijk KB-nummer: 917825
Samenvatting
Het hulpprogramma Sqldumper.exe is opgenomen in Microsoft SQL Server. Het genereert geheugendumpbestanden van SQL Server en gerelateerde processen voor foutopsporing. In dit artikel wordt beschreven hoe u Sqldumper.exe gebruikt om een dumpbestand te genereren voor Watson-foutrapportage of foutopsporingstaken.
In het artikel worden ook twee andere methoden beschreven voor het genereren van dumpbestanden:
- Het gekoppelde PowerShell-script automatiseert SQLDumper.exe opdrachtregelopties.
- De OPDRACHT DBCC STACKDUMP Transact-SQL (T-SQL) kan worden gebruikt voor het genereren van een dumpbestand in SQL Server.
Handmatig Sqldumper.exe uitvoeren
Voer het hulpprogramma Sqldumper.exe uit in de context van de map waarin SQL Server het hulpprogramma oorspronkelijk heeft geïnstalleerd.
Standaard is <het installatiepad van Sqldumper.exe SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\90\Shared\SQLDumper.exe. U ziet dat <SQLServerInstall Drive> een tijdelijke aanduiding is voor het station waarop u SQL Server hebt geïnstalleerd.
Voer de volgende stappen uit om een dumpbestand te genereren met behulp van het hulpprogramma Sqldumper.exe:
Open <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared folder.
In dit mappad <is getal> een tijdelijke aanduiding voor een van de volgende versies:
- 150 voor SQL Server 2019
- 140 voor SQL Server 2017
- 130 voor SQL Server 2016
- 120 voor SQL Server 2014
- 110 voor SQL Server 2012
- 100 voor SQL Server 2008
- 90 voor SQL Server 2005
Zorg ervoor dat het bestand Dbghelp.dll zich in deze map bevindt.
Selecteer Uitvoeren starten>, typ cmd en selecteer vervolgens OK.
Typ bij de opdrachtprompt de volgende opdracht en druk op Enter:
cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
Notitie
In dit mappad <is nummer> dezelfde tijdelijke aanduiding die wordt gewijzigd met de SQL Server-versie, zoals eerder is beschreven.
Als u een specifiek type dumpbestand wilt genereren, typt u de bijbehorende opdracht bij de opdrachtprompt en drukt u op Enter:
Volledig dumpbestand:
Sqldumper.exe <ProcessID> 0 0x01100
Minidumpbestand:
Sqldumper.exe <ProcessID> 0 0x0120
Minidumpbestand met indirect verwezen geheugen (dit is de aanbevolen optie en wordt standaard door SQL Server gebruikt wanneer automatisch geheugendumpbestanden worden gegenereerd):
Sqldumper.exe <ProcessID> 0 0x0128
Gefilterd dumpbestand:
Sqldumper.exe <ProcessID> 0 0x8100
Notitie
<ProcessID> is een tijdelijke aanduiding voor de proces-id van de Windows-toepassing waarvoor u een dumpbestand wilt genereren.
Als Sqldumper.exe wordt uitgevoerd, genereert het hulpprogramma een dumpbestand in de map waarin het hulpprogramma is geïnstalleerd.
Het dumpbestand dat Sqldumper.exe genereert, heeft een bestandsnaampatroon dat lijkt op SQLDmpr<xxxx.mdmp>.
In dit patroon <is xxxx> een toenemend aantal dat wordt bepaald op basis van andere bestanden met een vergelijkbare bestandsnaam in dezelfde map. Als er bestanden in de map staan die overeenkomen met het opgegeven patroon, kunt u overwegen de aanmaakdatums en -tijden te vergelijken om het gewenste bestand te vinden.
Een Microsoft Windows-toepassingsproces-id verkrijgen
Als u een dumpbestand wilt genereren met behulp van het hulpprogramma Sqldumper.exe, moet u de proces-id hebben van de Windows-toepassing waarvoor u een dumpbestand wilt genereren. U kunt als volgt de proces-id verkrijgen:
- Druk op Ctrl+Alt+Delete en selecteer Taakbeheer.
- Selecteer in het dialoogvenster Windows Taakbeheer het tabblad Processen .
- Selecteer Kolommen selecteren in het menu Beeld.
- Schakel in het dialoogvenster Kolommen selecteren het selectievakje PID (Proces-id) in en selecteer vervolgens OK.
- Noteer de proces-id van de Windows-toepassing waarvoor u een dumpbestand wilt genereren. Noteer voor de SQL Server-toepassing de proces-id van het Sqlservr.exe proces.
- Sluit Taakbeheer.
U kunt ook het SQL Server-foutenlogboekbestand gebruiken om de proces-id te verkrijgen van de SQL Server-toepassing die op uw computer wordt uitgevoerd. Een deel van het SQL Server-foutenlogboekbestand lijkt op het volgende voorbeeld:
2021-09-15 11:50:32.690 Server Microsoft SQL Server 2019 (RTM-CU12) (KB5004524) - 15.0.4153.1 (X64)
Jul 19 2021 15:37:34
Copyright (C) 2019 Microsoft Corporation
Enterprise Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19043: ) (Hypervisor)
2021-09-15 11:50:32.690 Server UTC adjustment: -5:00
2021-09-15 11:50:32.690 Server (c) Microsoft Corporation.
2021-09-15 11:50:32.690 Server All rights reserved.
2021-09-15 11:50:32.690 Server Server process ID is 7028.
Het getal dat hierna Server process ID
wordt weergegeven, is de proces-id voor het Sqlservr.exe proces.
Uitvoerpad voor geheugendumpbestanden
SQLDumper.exe genereert voornamelijk geheugendumpbestanden voor het SQL Server-proces wanneer een geheugendump nodig is om specifieke problemen op te lossen, zoals uitzonderingen, asserts of niet-rendementende planners. In dergelijke gevallen roept SQL Server de SQLDumper.exe aan om een geheugendumpbestand van het proces te genereren. Standaard wordt het geheugendumpbestand opgeslagen in de MAP MSSQL\LOG\ van het SQL-exemplaar.
Het standaardpad wijzigen
Als de grootte van het dumpbestand bijvoorbeeld te groot is, kunt u het pad wijzigen door de volgende stappen uit te voeren:
- Open SQL Server Configuration Manager.
- Zoek onder SQL Server Services het SQL Server-exemplaar dat wordt onderzocht.
- Klik met de rechtermuisknop op die vermelding, selecteer Eigenschappen en ga vervolgens naar het tabblad Geavanceerd .
- Wijzig die dumpmap in het gewenste pad en selecteer VERVOLGENS OK.
- Start SQL Server opnieuw op (indien mogelijk) om de nieuwe instelling van kracht te laten worden.
Wanneer het hulpprogramma Sqldumper.exe handmatig wordt gebruikt voor het genereren van een dumpbestand voor elke Windows-toepassing, kan het dumpbestand zo groot zijn als het geheugen dat de Windows-toepassing momenteel gebruikt. Zorg ervoor dat er voldoende schijfruimte beschikbaar is op het station waarnaar Sqldumper.exe het dumpbestand schrijft.
Een aangepaste uitvoermap opgeven in opdracht
U kunt de map opgeven waar u het hulpprogramma Sqldumper.exe het dumpbestand wilt schrijven. De map moet al bestaan voordat u Sqldumper.exe uitvoert. Anders mislukt Sqldumper.exe. Gebruik geen UNC-pad (Universal Naming Convention) als locatie voor het dumpbestand. De volgende stappen bevatten een voorbeeld van het opgeven van de locatie van het minidumpbestand:
Selecteer Uitvoeren starten>, typ cmd en selecteer vervolgens OK.
Typ bij de opdrachtprompt de volgende opdracht en druk op Enter:
cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
Typ bij de opdrachtprompt de volgende opdracht en druk op Enter:
Sqldumper.exe ProcessID 0 0x0128 0 <MdumpPath>
Notitie
<MdumpPath> is een tijdelijke aanduiding voor de map waarin u het hulpprogramma Sqldumper.exe het dumpbestand wilt schrijven. Standaard wordt het bestand naar de huidige map geschreven.
Als u een volledig dumpbestand of een gefilterd dumpbestand opgeeft dat moet worden gegenereerd, kan Sqldumper.exe enkele minuten duren om het dumpbestand te genereren. De tijd die nodig is, is afhankelijk van de volgende variabelen:
- De hoeveelheid geheugen die Sqlservr.exe momenteel gebruikt.
- De schrijfsnelheid van het station dat door het hulpprogramma wordt gebruikt om het dumpbestand op te slaan.
Gedurende deze periode worden opdrachten niet verwerkt door het hulpprogramma Sqldumper.exe. U zult merken dat de server niet meer reageert. Daarnaast kan er een clusterfailover optreden.
Machtigingsvereisten
Als u Sqldumper.exe wilt uitvoeren, moet u zich aanmelden bij Windows met een van de volgende methoden:
- Gebruik een account dat lid is van de groep van de beheerder op de computer.
- Gebruik hetzelfde gebruikersaccount waaronder de SQL Server-service wordt uitgevoerd.
Als u wilt dat het hulpprogramma Sqldumper.exe werkt via Extern bureaublad of via Terminal Services, moet u Extern bureaublad of Terminal Services starten in de consolemodus. Als u bijvoorbeeld Extern bureaublad wilt starten in de consolemodus, selecteert u Uitvoeren>starten, typt u mstsc /console en selecteert u VERVOLGENS OK. Als op de doelserver Windows 2000 wordt uitgevoerd, wordt de optie /console op de achtergrond genegeerd. U kunt verbinding maken met de server via Extern bureaublad, maar u gebruikt de consolesessie niet.
Als u merkt dat er geen dumpbestand is gegenereerd in de huidige map nadat Sqldumper.exe is uitgevoerd, controleert u de opdrachtregeluitvoer die is gegenereerd door het hulpprogramma om de mogelijke oorzaak van de fout te identificeren. Deze informatie wordt ook vastgelegd in het Sqldumper_errorlog.log-bestand in de huidige map. Hier volgen twee mogelijke foutberichten en de oorzaken:
Bericht | Oorzaak |
---|---|
"OpenProcess is mislukt 0x57 - De parameter is onjuist" | Er is een ongeldige proces-id doorgegeven aan het hulpprogramma Sqldumper.exe. |
"Ongeldige waarde voor thread-id - <ongeldige parameterparameterfout> " | Er is een ongeldige parameter doorgegeven aan het hulpprogramma Sqldumper.exe. |
Als er een foutbericht wordt gegenereerd dat lijkt op een van de volgende, kunt u dit bericht veilig negeren:
- "Onbekend callbacktype tijdens minidump 6"
- "Onbekend type callback tijdens minidump 7"
Impact van het genereren van dumps
Wanneer een dumpbestand van een gebruikersmodusproces wordt aangevraagd (zoals besproken in dit artikel, in tegenstelling tot kerneldumps van het besturingssysteem, die buiten ons bereik vallen), wordt het doelproces (hier SQLServer.exe) geblokkeerd voor de duur die nodig is om de dumpinhoud te serialiseren naar het bestandsdoel.
Geblokkeerd betekent dat het proces geen gebruikersaanvragen of interne bewerkingen kan uitvoeren, inclusief een Resource Polling-mechanisme, zoals de implementatie van IsAlive en Looks Alive van Windows Clustering (zie de sectie Geheugendumps op clusterfailovers voor meer informatie over hoe u deze situatie kunt afhandelen). Elke time-out die afhankelijk is van de kloktijd van de muur kan ook worden geschonden vanwege de bevriezen.
Op basis van de vorige verklaring is de duur van de blokkering hier de kritieke factor, die wordt aangestuurd door het volgende:
- Het type dump geselecteerd.
- De grootte van het SQL Server-proces in het geheugen, dat in het geval van één actief exemplaar met standaardparameters vaak dicht bij het totale fysieke RAM-geheugen van de server ligt.
- De prestaties van de schijf die wordt gebruikt als doel voor de dump.
Bovendien moet de grootte van het dumpbestand op schijf worden gepland, met name als meerdere dumps een mogelijkheid zijn en als er grote, niet-standaarddumptypen zijn geselecteerd. Controleer of u de dumptypen bekijkt om te weten wat u kunt verwachten. Standaard maken sommige dumpmethoden de dump in de map \Log van het SQL Server-exemplaar. In de standaard eenvoudige configuratie zou dit ook systeemschijf en data+logboekschijf voor SQL Server zijn. Het brengen van die schijf tot verzadiging heeft ernstige gevolgen voor de beschikbaarheid van SQL Server en/of systeem.
De impact op geclusterde systemen beheren
Het proces wordt tijdelijk onderbroken tijdens het genereren van de dump. Dit kan van invloed zijn op de beschikbaarheid van de SQL Server-service en het activeren van resources in AlwaysOn-contexten (zowel failoverclusterexemplaren als beschikbaarheidsgroep). Het genereren van dumps van verschillende processen heeft een andere invloed op resources. Lees de secties voor het genereren van dumps en dumptypen zorgvuldig.
Wanneer u een SQL Server-dump vastlegt op een failoverclusterexemplaren of een beschikbaarheidsgroepexemplaren van SQL Server, kan de geclusterde SQL Server of AG een failover naar een ander knooppunt uitvoeren als het te lang duurt voordat de dump is voltooid. Dit kan met name problematisch zijn voor systemen die grote hoeveelheden RAM gebruiken of als u een gefilterde of een volledige geheugendump genereert. Als u failover wilt voorkomen, gebruikt u de volgende instellingen voordat u het dumpbestand vastlegt. De wijziging kan worden teruggezet nadat een dumpbestand is gemaakt:
- Voor een failoverclusterexemplaar (FCI):
- Klik met de rechtermuisknop op SQL Server-resource in Clusterbeheerder, selecteer Als de resource mislukt en start niet opnieuw op het tabblad Beleid.
- Verhoog op het tabblad Eigenschappen de time-out statuscontrole. Stel bijvoorbeeld de eigenschapswaarde in op 180 seconden of hoger. Als deze time-out is bereikt, wordt het beleid als de resource mislukt, niet opnieuw opstarten genegeerd en wordt de resource opnieuw gestart.
- Wijzig op het tabblad Eigenschappen de waarde FailureConditionLevel in nul.
- Pas voor AG alle volgende instellingen toe:
- Verhoog de sessietime-out, bijvoorbeeld 120 seconden voor alle replica's. Klik in SQL Server Management Studio (SSMS) met de rechtermuisknop op de replica die u wilt configureren en selecteer Vervolgens Eigenschappen. Wijzig het veld Sessietime-out (seconden) in 120 seconden. Zie De sessietime-outperiode voor een beschikbaarheidsreplica (SQL Server) wijzigen voor meer informatie.
- Wijzig de automatische failover van alle replica's in handmatige failover. Klik in SSMS met de rechtermuisknop op replica, selecteer Eigenschappen en wijzig de automatische failover van alle replica's in handmatige failover op het tabblad Eigenschappen . Zie De failovermodus van een beschikbaarheidsreplica (SQL Server) wijzigen voor meer informatie.
- Verhoog de LeaseTimeout naar 60.000 ms (60 seconden) en wijzig HealthCheckTimeout in 90.000 ms (90 seconden). Klik in Clusterbeheerder met de rechtermuisknop op AG-resource, selecteer Eigenschappen en schakel vervolgens over naar het tabblad Eigenschappen om beide instellingen te wijzigen. Zie Instellingen voor de eigenschap HealthCheckTimeout configureren voor meer informatie.
Productverbeteringen om de impact op SQL Server te verminderen
Vier belangrijke verbeteringen worden toegevoegd aan recente versies van SQL Server om de grootte van het dumpbestand en/of de tijd voor het genereren van de geheugendump te verminderen:
- Bitmapfiltermechanisme
- Verwijdering van herhaalde dumps op hetzelfde probleem
- Verkorte uitvoer in het foutenlogboek
- Parallelle compressie van geheugendumps
Bitmapfiltermechanisme
SQL Server wijst een bitmap toe waarmee geheugenpagina's worden bijgehouden die moeten worden uitgesloten van een gefilterde dump. Sqldumper.exe de bitmap leest en filtert pagina's uit zonder dat u andere metagegevens van geheugenbeheer hoeft te lezen. U ziet de volgende berichten in het foutenlogboek van SQL Server wanneer de bitmap respectievelijk is ingeschakeld of uitgeschakeld:
Page exclusion bitmap is enabled.
en Page exclusion bitmap is disabled.
SQL Server 2016
Vanaf SQL Server 2016 SP2 CU13 is de bitmapfiltering standaard ingeschakeld.
SQL Server 2017
- Dit is niet beschikbaar in RTM tot en met CU15.
- In SQL Server 2017 CU16 kunt u het bitmapfilter via T8089 inschakelen en uitschakelen door T8089 uit te schakelen.
- Vanaf SQL Server 2017 CU20 is het bitmapfilter standaard ingeschakeld. Traceringsvlag T8089 wordt niet meer toegepast en wordt genegeerd als deze is ingeschakeld. De bitmapfiltering kan worden uitgeschakeld via T8095.
SQL Server 2019
Dit is standaard ingeschakeld in SQL Server 2019 RTM. Het kan worden uitgeschakeld via T8095.
Verwijdering van herhaalde dumps op hetzelfde probleem
Herhaalde geheugendumps op hetzelfde probleem worden geëlimineerd. Met behulp van een stackhandtekening wordt de SQL-engine bijgehouden of er al een uitzondering is opgetreden en wordt er geen nieuwe geheugendump geproduceerd als er al een is. Dit geldt voor toegangsschendingen, stack-overloop, asserties en uitzonderingen voor beschadiging van indexen. Dit vermindert de hoeveelheid schijfruimte die wordt gebruikt door geheugendumps aanzienlijk en blokkeert het proces niet tijdelijk om een dump te genereren. Dit is toegevoegd in SQL Server 2019.
Verkorte uitvoer in het foutenlogboek
De inhoud die wordt gegenereerd in het SQL Server-foutenlogboek van één geheugendump kan niet alleen overweldigend zijn, maar kan ook het proces van het genereren van een geheugendump vertragen vanwege de tijd die nodig is voor het serialiseren van al deze informatie in een tekstindeling in het foutenlogboek. In SQL Server 2019 is de inhoud die is opgeslagen in het foutenlogboek bij het genereren van de dump aanzienlijk verminderd en kan het er als volgt uitzien:
DateTimespidS pid **Dump thread - spid = 0, EC = 0x0000015C7169BF40
DateTimespidS pid *
DateTimespidS pid *User initiated stack dump. This is not a server exception dump.
DateTimespidS pid *
DateTimespidS pid Stack Signature for the dump is 0x00000000788399E5
DateTimespidS pid External dump process return code 0x20000001.
External dump process returned no errors.
Voorheen zou SQL Server informatie afdrukken voor elke sessie of thread wanneer een handmatige dump bijvoorbeeld werd geactiveerd door de gebruiker.
Parallelle compressie van geheugendumps
Om dumps sneller te genereren en kleiner te maken, is er een functie voor gecomprimeerde geheugendump geïntroduceerd in SQL Server 2022 CU8 en SQL Server 2019 CU23. Wanneer dit is geactiveerd, maakt Sqldumper.exe meerdere threads om het geheugen van een proces tegelijkertijd te lezen, gecomprimeerd en op te slaan in het dumpbestand. Deze multithread, parallelle compressie vermindert de bestandsgrootte en versnelt het dumpproces wanneer deze wordt gebruikt met volledige en gefilterde dumps.
U kunt traceringsvlag 2610 inschakelen om gecomprimeerde geheugendump in te schakelen:
DBCC TRACEON (2610,-1)
GO
DBCC STACKDUMP with FILTERED_DUMP
GO
DBCC TRACEOFF (2610,-1)
U kunt ook toevoegen -T2610
als opstartparameter aan uw SQL Server-exemplaar, zodat er altijd gecomprimeerde geheugendumps worden gemaakt.
Als u handmatig Sqldumper.exe uitvoert, kunt u de -zdmp
parameter gebruiken om een gecomprimeerde geheugendump vast te leggen. Bijvoorbeeld:
Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp
U kunt ook beperken hoeveel kernen Sqldumper.exe kunnen gebruiken om de gecomprimeerde dump te maken met behulp van de -cpu:X
parameter, waarbij X het aantal CPU's is. Deze parameter is alleen beschikbaar wanneer u handmatig Sqldumper.exe vanaf de opdrachtregel uitvoert:
Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp -cpu:8
Factoren die het maken van geheugendumps voorkomen of vertragen
De volgende factoren zijn bekend om vertragingen te veroorzaken of het maken van geheugendumps te voorkomen.
- Het IO-pad waarin geheugendumps worden geschreven, presteert slecht. In dergelijke gevallen is het onderzoeken en oplossen van I/O-prestaties van schijf de volgende logische stap.
- Een antivirussoftware of andere bewakingssoftware verstoort SQLDumper.exe. In sommige gevallen, software detour ReadProcessMemory functie van derden. Dit kan de dumpduur aanzienlijk verhogen. Als u de meeste van deze problemen wilt oplossen, schakelt u de verstorende software uit of voegt u SQLDumper.exe toe aan een uitsluitingslijst.
Dumptypen
De volgende methoden kunnen worden gebruikt om drie verschillende typen dumps te genereren: minidumps, volledige dumps en gefilterde dumps.
Minidumps met geheugen waarnaar wordt verwezen
Dit type geheugendump is een momentopname van alle actieve threads van het proces ('threadstacks'),, samen met een beperkt extract van het geheugen waarnaar wordt verwezen door de threadstacks en enkele andere belangrijke proces- of threadgegevens. Ze zijn meestal een paar megabytes groot en kunnen snel worden gegenereerd (van minder dan een seconde tot een paar seconden). Zelfs grotere serversystemen (met honderden CPU die indirect leiden tot een enorm aantal threads in het SQL Server-proces) overschrijden zelden 20-30 MB: de grootte van een minidump groeit niet met de grootte van het SQL Server-proces. Dit dumptype is het standaardtype dat door SQL Server wordt gebruikt bij het automatisch genereren van geheugendumps op uitzonderingen, scheduler-problemen, vergrendelingsproblemen, databasebeschadiging en asserties.
Notitie
SQL Server genereert in sommige specifieke situaties geautomatiseerde 'diagnostische minidumps' als onderdeel van de ingebouwde instrumentatie. Deze bewerking wordt daarom als veilig beschouwd, zodat SQL Server deze automatisch kan activeren wanneer dat nodig is.
Volledige dumps
Een dump voor volledig geheugen is een volledige kopie van de actieve doelprocesruimte. Dit omvat daarom alle threadstatus, alle toegewezen geheugenprocessen en alle geladen modules. Volledige dumps hebben daarom een grootte, die ongeveer hetzelfde is als het SQL Server-proces, dat op zijn beurt bijna zo groot kan zijn als het totale ram-geheugen van het systeem. Op grote servers die zijn toegewezen aan één SQL Server-exemplaar, kan dit een bestand betekenen, dat enkele honderden gigabytes of meer is. Onnodig te zeggen, een dergelijk bestand duurt lang om te genereren en zal daarom langdurige bevriezen veroorzaken. Schijfprestaties voor het bestandsdoel van de dump beïnvloeden de vriestijd aanzienlijk. Dit type dump wordt tegenwoordig zelden gebruikt voor SQL Server, zoals beschreven in de volgende uitleg.
Gefilterde dumps
Naarmate de RAM-grootte van typische servers met SQL Server geleidelijk toeneemt, worden volledige dumps onhandig. Gefilterde dumps worden daarom geïmplementeerd. Een gefilterde dump is een subset van een volledige dump, waarbij grote gebieden van SQL Server-geheugen worden uitgesloten en niet naar schijf worden geschreven. Normaal gesproken biedt het uitgesloten geheugen geen toegevoegde waarde voor het oplossen van problemen. Voorbeelden zijn gegevens-/indexpagina's en enkele interne caches, zoals Hekaton-gegevenspagina's en logboekgroepgeheugen. Deze gefilterde dump resulteert in een kleiner bestand dan een volledige dump, maar de dump behoudt nog steeds bijna alle bruikbaarheid. Gefilterde dumps hebben volledige dumps vervangen als de voorkeursoptie in een overgrote meerderheid van situaties waarin minidumps niet voldoende zijn. De afname in grootte kan variëren in vergelijking met een volledige dump, maar het is nog steeds een vrij groot bestand, dat vaak 30-60 procent van de SQL Server-procesgrootte is. Daarom is het het beste om te plannen voor een mogelijke grootte zo groot als een volledige dump als een slechtste optie, die een goede veiligheidsmarge laat. Een gefilterde dump is mogelijk niet noodzakelijkerwijs sneller te genereren dan een volledige dump in elk geval: het is een kwestie van of de winsten met betrekking tot het aantal vermeden I/O de tijd overschrijden die nodig is om de filterlogica te implementeren (schijfsnelheid en CPU/RAM-snelheid zullen dat beïnvloeden).
U kunt de volgende query gebruiken om een ruwe schatting te krijgen van de gefilterde dumpgrootte. Hoewel de verwachting is dat de meeste gegevens- of indexpagina's worden uitgesloten van de dump, worden de pagina's die uitsluitend worden vastgemaakt en gewijzigd, niet weggelaten.
SELECT SUM(pages_kb)
FROM sys.dm_os_memory_clerks
WHERE type != 'MEMORYCLERK_SQLBUFFERPOOL'
Aangezien u Sqldumper.exe kunt gebruiken om een dumpbestand op aanvraag te genereren voor elke Microsoft Windows-toepassing, kunt u overwegen om de gefilterde dumpoptie te gebruiken. Een gefilterd dumpbestand is echter alleen van toepassing en zinvol in de context van SQL Server. U kunt nog steeds een minidump, een volledig dumpbestand of niet-SQL Server-toepassingen genereren.
Het SQL Server-proces roept het Sqldumper.exe hulpprogramma intern aan om een dumpbestand te genereren wanneer het proces uitzonderingen ondervindt. SQL Server geeft parameters door aan Sqldumper.exe. U kunt traceringsvlagmen gebruiken om de parameters te wijzigen die SQL Server standaard doorgeeft aan het hulpprogramma wanneer er een uitzondering of assertie plaatsvindt. Deze traceringsvlagmen liggen tussen 2540 en 2559. U kunt een van deze traceringsvlagmen gebruiken om het standaarddumptype te wijzigen SQLDumper.exe genereren (de standaardwaarde is een minidump met geheugen waarnaar wordt verwezen). Bijvoorbeeld:
- Trace Flag 2551: Produceert een gefilterde geheugendump.
- Trace Flag 2544: Produceert een volledige geheugendump.
- Traceringsvlag 8026: SQL Server wist een dumptrigger nadat de dump eenmaal is gegenereerd.
Als er twee of meer traceringsvlagmen actief zijn, wordt de optie die aangeeft dat de grootste geheugendump wordt uitgevoerd, uitgevoerd. Als traceringsvlagmen bijvoorbeeld 2551 en 2544 worden gebruikt, maakt SQL Server een volledige geheugendump.
Een geheugendump genereren op clusterfailovers
In scenario's met clusterfailover kan het DLL-bestand van de SQL Server-resource een dumpbestand verkrijgen voordat de failover plaatsvindt om u te helpen bij het oplossen van problemen. Wanneer de SQL Server-resource-DLL bepaalt dat een SQL Server-resource is mislukt, gebruikt de SQL Server-resource-DLL het Sqldumper.exe hulpprogramma om een dumpbestand van het SQL Server-proces te verkrijgen. Om ervoor te zorgen dat het Sqldumper.exe hulpprogramma het dumpbestand heeft gegenereerd, moet u de volgende drie eigenschappen instellen als vereisten:
SqlDumperDumpTimeOut
Een door de gebruiker opgegeven time-out. De resource-DLL wacht totdat het dumpbestand is voltooid voordat de RESOURCE-DLL de SQL Server-service stopt.
SqlDumperDumpPath
De locatie waar het hulpprogramma Sqldumper.exe het dumpbestand genereert.
SqlDumperDumpFlags
Vlaggen die Sqldumper.exe gebruikt.
Als een van de eigenschappen niet is ingesteld, kan Sqldumper.exe het dumpbestand niet genereren. Er wordt een waarschuwingsbericht geregistreerd in het gebeurtenislogboek en in het clusterlogboek wanneer de resource online wordt gebracht.
Clusterconfiguratie voor SQLDumper op SQL Server 2012 en latere versies
U kunt de ALTER SERVER CONFIGURATION
opdracht (T-SQL) gebruiken om deze eigenschappen te wijzigen. Bijvoorbeeld:
ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpTimeOut = 0;
ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpPath = 'C:\temp\';
ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpFlags = 296;
U kunt ook PowerShell-scripts gebruiken. Bijvoorbeeld voor een benoemd exemplaar SQL2017AG:
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpPath" -Value "C:\temp"
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpFlags" -Value 296
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpTimeOut" -Value 0
Als u wilt controleren of de instellingen zijn toegepast, kunt u de volgende PowerShell-opdracht uitvoeren:
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Get-ClusterParameter
Clusterconfiguratie voor SQLDumper op SQL Server 2008/2008 R2 of Windows 2012 en eerdere versies
Als u de eigenschappen van het Sqldumper.exe hulpprogramma voor clusterfailover wilt instellen met behulp van de opdracht clusterresource , voert u de volgende stappen uit:
- Selecteer Uitvoeren starten>, typ cmd en selecteer vervolgens OK.
- Typ voor elke eigenschap de bijbehorende opdracht bij de opdrachtprompt en druk vervolgens op Enter:
De
SqlDumperDumpFlags
eigenschapAls u de
SqlDumperDumpFlags
eigenschap voor een specifiek dumpbestand wilt instellen, typt u de bijbehorende opdracht bij de opdrachtprompt en drukt u op Enter:Alle thread-bestand met volledige dump
Standaardexemplaar
cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x01100
Benoemd exemplaar
cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x01100
Alle thread minidumpbestand
Standaardexemplaar
cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x0120
Benoemd exemplaar
cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x0120
Alle threaddumpbestand gefilterd
Standaardexemplaar
cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x8100
Benoemd exemplaar
cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x8100
De
SqlDumperDumpPath
eigenschapcluster resource "SQL Server" /priv SqlDumperDumpPath = <DirectoryPath>
Notitie
<DirectoryPath> is een tijdelijke aanduiding voor de map waarin het dumpbestand wordt gegenereerd en moet worden opgegeven tussen aanhalingstekens (" ").
De
SqlDumperDumpTimeOut
eigenschapcluster resource "SQL Server" /priv SqlDumperDumpTimeOut = <Timeout>
Notitie
<Time-out> is een tijdelijke aanduiding voor de time-out in milliseconden (ms).
De tijd die het hulpprogramma nodig heeft om een dumpbestand van een SQL Server-proces te genereren, is afhankelijk van de computerconfiguratie. Voor een computer met een grote hoeveelheid geheugen kan de tijd aanzienlijk zijn. Als u de benodigde tijd voor het proces wilt schatten, gebruikt u het hulpprogramma Sqldumper.exe om handmatig een dumpbestand te genereren. De geldige waarden voor de SqlDumperDumpTimeOut
eigenschap zijn van 10.000 ms tot MAXDWORD. MAXDWORD vertegenwoordigt de hoogste waarde in het bereik van het DWORD-gegevenstype (4294967295).
Als u wilt controleren of de instellingen zijn ingeschakeld, kunt u de volgende opdracht uitvoeren:
cluster resource "SQL Server" /priv
Sqldumper.exe-eigenschappen voor clusterfailover verwijderen
Voer de volgende stappen uit om de eigenschappen van het hulpprogramma Sqldumper.exe voor clusterfailover te verwijderen:
Selecteer Uitvoeren starten>, typ cmd en selecteer vervolgens OK.
Voor een specifieke eigenschap typt u de bijbehorende opdracht bij de opdrachtprompt en drukt u vervolgens op Enter:
De
SqlDumperDumpFlags
eigenschapStandaardexemplaar
cluster resource "SQL Server" /priv:SqlDumperDumpFlags /usedefault
Benoemd exemplaar
cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpFlags /usedefault
De
SqlDumperDumpPath
eigenschapStandaardexemplaar
cluster resource "SQL Server" /priv:SqlDumperDumpPath /usedefault
Benoemd exemplaar
cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpPath /usedefault
De
SqlDumperDumpTimeOut
eigenschapStandaardexemplaar
cluster resource "SQL Server" /priv:SqlDumperDumpTimeOut /usedefault
Benoemd exemplaar
cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpTimeOut /usedefault
DBCC STACKDUMP gebruiken
Met de DBCC STACKDUMP
opdracht kunt u een geheugendump maken in de LOG-map van de installatie van uw SQL Server-exemplaar. De opdracht maakt standaard een minidump met alle threads, die een beperkte grootte heeft en voldoende is om de status van het SQL Server-proces weer te geven. Voer de volgende opdracht uit in een SQL Server-client:
DBCC STACKDUMP
Zie Uitgebreide DBCC STACKDUMP-functionaliteit geïntroduceerd in SQL Server 2019 voor uitgebreide functionaliteit van DBCC STACKDUMP
SQL Server 2019.
Als u deze methode wilt inschakelen om een gefilterde dump te maken, schakelt u traceringsvlagken 2551 in met behulp van de volgende opdracht:
DBCC TRACEON(2551, -1)
GO
DBCC STACKDUMP
Als u een volledige dump wilt maken, gebruikt u de traceringsvlag 2544.
Nadat u het dumpbestand hebt getypt, moet u de traceringsvlag uitschakelen met behulp van de opdracht DBCC TRACEOFF (<TraceNumber>, -1);
om onbedoeld het upgraden van alle verdere zelfdiagnose-minidumps van SQL Server naar grotere dumps te voorkomen. In de opdracht <is TraceNumber> de traceringsvlag die u eerder hebt ingeschakeld, zoals 2551 of 2544. Bijvoorbeeld:
DBCC TRACEOFF(2551, -1)
Als u niet zeker weet welke traceringsvlag actief blijft, voert u de volgende opdracht uit:
DBCC TRACESTATUS(-1)
Een lege resultatenset geeft aan dat er geen traceringsvlag actief is. Als 2551 echter nog steeds actief is, ziet u:
TraceFlag | Status | Globaal | Sessie |
---|---|---|---|
2551 | 1 | 1 | 0 |
Notitie
De traceflag
ingeschakelde functie DBCC TRACEON
wordt opnieuw ingesteld (verwijderd) nadat de service opnieuw is opgestart.
Uitgebreide DBCC STACKDUMP-functionaliteit geïntroduceerd in SQL Server 2019
Vanaf SQL Server 2019 CU2 is de DBCC STACKDUMP
opdracht uitgebreid ter ondersteuning van het genereren van dumps van verschillende typen: mini, gefilterd en volledige dumps. Met deze opdracht hoeft u geen traceringsvlagmen te gebruiken. Hiermee kunt u ook de tekstuitvoer in het andere tekstbestand beperken dat wordt gegenereerd met de geheugendump. Dit kan een zichtbare prestatiewinst opleveren in de tijd die het SQLDumper.exe kost om een geheugendump te genereren.
DBCC STACKDUMP WITH MINI_DUMP | FILTERED_DUMP | FULL_DUMP [, TEXT_DUMP = LIMITED | DETAILED]
Dit TEXT_DUMP = LIMITED
is de standaardoptie. Als u gedetailleerde uitvoer in het SQLDump000X.txt-bestand wilt ontvangen, kunt u dit gebruiken TEXT_DUMP = DETAILED
.
Voer de volgende opdracht uit om een gefilterde dump met beperkte uitvoer te genereren in het .txt-bestand :
DBCC STACKDUMP WITH FILTERED_DUMP , TEXT_DUMP = LIMITED
Een PowerShell-script gebruiken om een dumpbestand te genereren met SQLDumper
Sla de volgende code op als een PS1-bestand, bijvoorbeeld SQLDumpHelper.ps1:
Codedetails
$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 = "" Write-Host "" Write-Host "`******************************************************************" Write-Host "This script helps you generate one or more SQL Server memory dumps" Write-Host "It presents you with choices on:` -target SQL Server process (if more than one) -type of memory dump -count and time interval (if multiple memory dumps) You can interrupt this script using CTRL+C" Write-Host "***********************************************************************" # check for administrator rights # debugging tools like SQLDumper.exe require Admin privileges to generate a memory dump if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Warning "Administrator rights are required to generate a memory dump!`nPlease re-run this script as an Administrator!" return } # what product would you like to generate a memory dump while ($true) { Write-Host "Which product would you like to generate a memory dump of?" -ForegroundColor Yellow Write-Host "1) SQL Server" Write-Host "2) SSAS (Analysis Services)" Write-Host "3) SSIS (Integration Services)" Write-Host "4) SSRS (Reporting Services)" Write-Host "5) SQL Server Agent" Write-Host "" $ProductNumber = Read-Host "Enter 1-5>" if ($ProductNumber -in 1,2,3,4,5) { break } Write-Host "`nPlease enter a valid number from list above!`n" Start-Sleep -Milliseconds 300 } if ($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 (Integration Services)" } elseif ($ProductNumber -eq "4") { $SqlTaskList = Tasklist /SVC /FI "imagename eq reportingservicesservice*" /FO CSV | ConvertFrom-Csv $ProductStr = "SSRS (Reporting Services)" } elseif ($ProductNumber -eq "5") { $SqlTaskList = Tasklist /SVC /FI "imagename eq sqlagent*" /FO CSV | ConvertFrom-Csv $ProductStr = "SQL Server Agent" } if ($SqlTaskList.Count -eq 0) { Write-Host "There are currently no running instances of $ProductStr. Exiting..." -ForegroundColor Green break } # if multiple SQL Server instances, get the user to input PID for desired SQL Server if ($SqlTaskList.Count -gt 1) { Write-Host "More than one $ProductStr instance found." $SqlTaskList | Select-Object PID, "Image name", Services | Out-Host # check input and make sure it is a valid integer while ($true) { Write-Host "Please enter the PID for the desired SQL service from list above" -ForegroundColor Yellow $SqlPidStr = Read-Host ">" if( $SqlPidStr -in $SqlTaskList.PID) { $SqlPidInt = [int]$SqlPidStr break } } Write-Host "Using PID=$SqlPidInt for generating a $ProductStr memory dump" -ForegroundColor Green Write-Host "" } else # if only one SQL Server/SSAS on the box, go here { $SqlTaskList | Select-Object PID, "Image name", Services | Out-Host $SqlPidInt = [convert]::ToInt32($SqlTaskList.PID) Write-Host "Using PID=", $SqlPidInt, " for generating a $ProductStr memory dump" -ForegroundColor Green Write-Host "" } # dump type if ($ProductNumber -eq "1") # SQL Server memory dump { # ask what type of SQL Server memory dump while($true) { Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow Write-Host "1) Mini-dump" Write-Host "2) Mini-dump with referenced memory " -NoNewLine; Write-Host "(Recommended)" Write-Host "3) Filtered dump " -NoNewline; Write-Host "(Not Recommended)" -ForegroundColor Red Write-Host "4) Full dump " -NoNewline; Write-Host "(Do Not Use on Production systems!)" -ForegroundColor Red Write-Host "" $SqlDumpTypeSelection = Read-Host "Enter 1-4>" if ($SqlDumpTypeSelection -in 1,2,3,4) { break } Write-Host "`nPlease enter a valid type of memory dump!`n" Start-Sleep -Milliseconds 300 } Write-Host "" switch ($SqlDumpTypeSelection) { "1" { $DumpType="0x0120"; break } "2" { $DumpType="0x0128"; break } "3" { $DumpType="0x8100"; break } "4" { $DumpType="0x01100"; break } default { "0x0120"; break } } } elseif ($ProductNumber -eq "2") # SSAS dump { # ask what type of SSAS memory dump while($true) { Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow Write-Host "1) Mini-dump" Write-Host "2) Full dump " -NoNewline; Write-Host "(Do Not Use on Production systems!)" -ForegroundColor Red Write-Host "" $SSASDumpTypeSelection = Read-Host "Enter 1-2>" if ($SSASDumpTypeSelection -in 1,2) { break } Write-Host "`nPlease enter a valid type of memory dump!`n" Start-Sleep -Milliseconds 300 } Write-Host "" switch ($SSASDumpTypeSelection) { "1" {$DumpType="0x0";break} "2" {$DumpType="0x34";break} default {"0x0120"; break} } } elseif ($ProductNumber -in 3,4,5) # SSIS/SSRS/SQL Agent dump { # ask what type of SSIS memory dump while($true) { Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow Write-Host "1) Mini-dump" Write-Host "2) Full dump" Write-Host "" $SSISDumpTypeSelection = Read-Host "Enter 1-2>" if ($SSISDumpTypeSelection -in 1,2) { break } Write-Host "`nPlease enter a valid type of memory dump!`n" Start-Sleep -Milliseconds 300 } Write-Host "" switch ($SSISDumpTypeSelection) { "1" { $DumpType="0x0"; break } "2" { $DumpType="0x34"; break } default { "0x0120"; break } } } # Sqldumper.exe PID 0 0x0128 0 c:\temp # output folder while($OutputFolder -eq "" -or !(Test-Path -Path $OutputFolder)) { Write-Host "" Write-Host "Where would your like the memory dump stored (output folder)?" -ForegroundColor Yellow $OutputFolder = Read-Host "Enter an output folder with no quotes (e.g. C:\MyTempFolder or C:\My Folder)" if ($OutputFolder -eq "" -or !(Test-Path -Path $OutputFolder)) { Write-Host "'" $OutputFolder "' is not a valid folder. Please, enter a valid folder location" -ForegroundColor Yellow } } # strip the last character of the Output folder if it is a backslash "\". Else Sqldumper.exe will fail if ($OutputFolder.Substring($OutputFolder.Length-1) -eq "\") { $OutputFolder = $OutputFolder.Substring(0, $OutputFolder.Length-1) Write-Host "Stripped the last '\' from output folder name. Now folder name is $OutputFolder" } # find the highest version of SQLDumper.exe on the machine $NumFolder = dir "C:\Program Files\Microsoft SQL Server\1*" | Select-Object @{name = "DirNameInt"; expression={[int]($_.Name)}}, Name, Mode | Where-Object Mode -Match "da*" | Sort-Object DirNameInt -Descending for( $j=0; $j -lt $NumFolder.Count; $j++) { $SQLNumfolder = $NumFolder.DirNameInt[$j] # start with the highest value from sorted folder names - latest version of dumper $SQLDumperDir = "C:\Program Files\Microsoft SQL Server\" + $SQLNumfolder.ToString() + "\Shared\" $TestPathDumperDir = $SQLDumperDir + "sqldumper.exe" if (Test-Path -Path $SQLDumperDir) { break } } # build the SQLDumper.exe command e.g. (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)" Write-Host "Command for dump generation: ", $cmd, $arglist -ForegroundColor Green # do-we-want-multiple-dumps section Write-Host "" Write-Host "This utility can generate multiple memory dumps, at a certain interval" Write-Host "Would you like to collect multiple memory dumps (2 or more)?" -ForegroundColor Yellow # validate Y/N input while ($true) { $YesNo = Read-Host "Enter Y or N>" if ($YesNo -in "y","n") { break } Write-Host "Not a valid 'Y' or 'N' response" } # get input on how many dumps and at what interval if ($YesNo -eq "y") { [int]$DumpCountInt=0 while (1 -ge $DumpCountInt) { Write-Host "How many dumps would you like to generate for this $ProductStr ?" -ForegroundColor Yellow $DumpCountStr = Read-Host ">" if ([int]::TryParse($DumpCountStr, [ref]$DumpCountInt) -and $DumpCountInt -gt 1) { break } Write-Host "Please enter a number greater than one." -ForegroundColor Red } [int]$DelayIntervalInt=0 while ($true) { Write-Host "How frequently (in seconds) would you like to generate the memory dumps?" -ForegroundColor Yellow $DelayIntervalStr = Read-Host ">" if ([int]::TryParse($DelayIntervalStr, [ref]$DelayIntervalInt) -and $DelayIntervalInt -gt 0) { break } Write-Host "Please enter a number greater than zero." -ForegroundColor Red } Write-Host "Generating $DumpCountInt memory dumps at a $DelayIntervalStr-second interval" -ForegroundColor Green # loop to generate multiple dumps $cntr = 0 while ($true) { Start-Process -FilePath $cmd -Wait -Verb runAs -ArgumentList $arglist $cntr++ Write-Host "Generated $cntr memory dump(s)." -ForegroundColor Green if ($cntr -ge $DumpCountInt) { break } Start-Sleep -S $DelayIntervalInt } # print what files exist in the output folder Write-Host "" Write-Host "Here are all the memory dumps in the output folder '$OutputFolder'" -ForegroundColor Green $MemoryDumps = $OutputFolder + "\SQLDmpr*" Get-ChildItem -Path $MemoryDumps Write-Host "" Write-Host "Process complete" } else # produce just a single dump { Start-Process -FilePath $cmd -Wait -Verb runAs -ArgumentList $arglist # print what files exist in the output folder Write-Host "" Write-Host "Here are all the memory dumps in the output folder '$OutputFolder'" -ForegroundColor Green $MemoryDumps = $OutputFolder + "\SQLDmpr*" Get-ChildItem -Path $MemoryDumps Write-Host "" Write-Host "Process complete" } Write-Host "For errors and completion status, review SQLDUMPER_ERRORLOG.log created by SQLDumper.exe in the output folder '$OutputFolder'.`nOr if SQLDumper.exe failed, look in the folder from which you are running this script."
Voer deze uit vanaf de opdrachtprompt als beheerder met behulp van de volgende opdracht:
Powershell.exe -File SQLDumpHelper.ps1
Of voer deze uit vanuit de Windows PowerShell-console en voer deze uit als beheerder met behulp van de volgende opdracht:
.\SQLDumpHelper.ps1
Notitie
Als u nog nooit PowerShell-scripts op uw systeem hebt uitgevoerd, wordt mogelijk het volgende foutbericht weergegeven:
"Bestand ... SQLDumpHelper.ps1 kan niet worden geladen omdat het uitvoeren van scripts is uitgeschakeld op dit systeem.
Als u de mogelijkheid wilt inschakelen om de opdrachten uit te voeren, voert u de volgende stappen uit:
Start de Windows PowerShell-console met behulp van de optie Uitvoeren als administrator . Alleen leden van de beheerdersgroep op de computer kunnen het uitvoeringsbeleid wijzigen.
Schakel niet-ondertekende scripts in met de volgende opdracht:
Set-ExecutionPolicy RemoteSigned
Notitie
Hiermee kunt u niet-ondertekende scripts uitvoeren die u maakt op uw lokale computer en ondertekende scripts van internet.