Sqldumper.exe aracını kullanarak SQL Server'de döküm dosyası oluşturma

Bu makale, SQL Server dahil Sqldumper.exe aracı için genel yönergeler sağlar. Bu araç, farklı türde döküm dosyaları oluşturmak için kullanılır.

Orijinal ürün sürümü: SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
Özgün KB numarası: 917825

Özet

Sqldumper.exe aracı Microsoft SQL Server'a dahildir. Hata ayıklama için SQL Server ve ilgili işlemlerin bellek dökümü dosyalarını oluşturur. Bu makalede Watson hata raporlama veya hata ayıklama görevleri için döküm dosyası oluşturmak üzere Sqldumper.exe nasıl kullanılacağı açıklanmaktadır.

Makalede döküm dosyaları oluşturmak için iki yöntem daha açıklanmaktadır:

  • Ekli PowerShell betiği , SQLDumper.exe komut satırı seçeneklerini otomatikleştirir.
  • DBCC STACKDUMP Transact-SQL (T-SQL) komutu, SQL Server bir döküm dosyası oluşturmak için kullanılabilir.

Sqldumper.exe el ile çalıştırma

Sqldumper.exe aracını, SQL Server ilk olarak yüklediği klasörün bağlamı altında çalıştırın.

Varsayılan olarak, Sqldumper.exe yükleme yolu SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\90\Shared\SQLDumper.exeşeklindedir<. SQLServerInstall Sürücüsünün<>, SQL Server yüklediğiniz sürücü için bir yer tutucu olduğuna dikkat edin.

Sqldumper.exe aracını kullanarak döküm dosyası oluşturmak için şu adımları izleyin:

  1. SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared klasörünü açın<.

    Bu klasör yolunda, <sayı> aşağıdakilerden biri için yer tutucudur:

    • SQL Server 2019 için 150
    • SQL Server 2017 için 140
    • SQL Server 2016 için 130
    • SQL Server 2014 için 120
    • SQL Server 2012 için 110
    • SQL Server 2008 için 100
    • SQL Server 2005 için 90
  2. Dbghelp.dll dosyasının bu klasörde olduğundan emin olun.

  3. Çalıştırmayı Başlat'ı> seçin, cmd yazın ve tamam'ı seçin.

  4. Komut isteminde aşağıdaki komutu yazın ve Enter tuşuna basın:

    cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
    

    Not

    Bu klasör yolunda, sayı>, <daha önce açıklandığı gibi SQL Server sürümüyle değişen yer tutucuyla aynıdır.

  5. Belirli bir döküm dosyası türü oluşturmak için komut istemine karşılık gelen komutu yazın ve enter tuşuna basın:

    • Tam döküm dosyası:

      Sqldumper.exe <ProcessID> 0 0x01100
      
    • Mini döküm dosyası:

      Sqldumper.exe <ProcessID> 0 0x0120
      
    • Dolaylı olarak başvurulan bellek içeren mini döküm dosyası (bu önerilen seçenektir ve ayrıca bellek dökümü dosyalarını otomatik olarak oluşturduğunda varsayılan olarak SQL Server tarafından kullanılır):

      Sqldumper.exe <ProcessID> 0 0x0128
      
    • Filtrelenmiş döküm dosyası:

      Sqldumper.exe <ProcessID> 0 0x8100
      

    Not

    <ProcessID> , döküm dosyası oluşturmak istediğiniz Windows uygulamasının işlem tanımlayıcısı için bir yer tutucudur.

Sqldumper.exe başarıyla çalıştırılırsa araç, aracın yüklü olduğu klasörde bir döküm dosyası oluşturur.

Sqldumper.exe oluşturan döküm dosyasının, SQLDmpr<xxxx.mdmp'ye> benzeyen bir dosya adı deseni vardır.

Bu düzende xxxx>, <aynı klasörde benzer bir dosya adına sahip diğer dosyalara göre belirlenen artan bir sayıdır. Klasörde belirtilen düzende dosya adları olan dosyalarınız zaten varsa, istediğiniz dosyayı tanımlamak için dosyanın oluşturulduğu tarih ve saati karşılaştırmanız gerekebilir.

Microsoft Windows uygulama işlemi tanımlayıcısı edinme

Sqldumper.exe aracını kullanarak döküm dosyası oluşturmak için, döküm dosyası oluşturmak istediğiniz Windows uygulamasının işlem tanımlayıcısına sahip olmanız gerekir. İşlem tanımlayıcısını şu şekilde edinebilirsiniz:

  1. Ctrl+Alt+Delete tuşlarına basın ve Görev Yöneticisi'ne tıklayın.
  2. Windows Görev Yöneticisi iletişim kutusunda İşlemler sekmesini seçin.
  3. Görünüm menüsünde Sütunları Seç'i seçin.
  4. Sütunları Seç iletişim kutusunda PID (İşlem Tanımlayıcısı) onay kutusunu ve ardından Tamam'ı seçin.
  5. Döküm dosyası oluşturmak istediğiniz Windows uygulamasının işlem tanımlayıcısına dikkat edin. SQL Server uygulaması için Sqlservr.exeişleminin işlem tanımlayıcısını not edin.
  6. Görev Yöneticisi'ne tıklayın.

Alternatif olarak, bilgisayarınızda çalışan SQL Server uygulamasının işlem tanımlayıcısını almak için SQL Server hata günlüğü dosyasını kullanın. SQL Server hata günlüğü dosyasının bir bölümü aşağıdaki örneğe benzer:

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.

Sonra görüntülenen Server process ID sayı, Sqlservr.exe işleminin işlem tanımlayıcısıdır.

Bellek dökümü dosyaları için çıkış yolu

SQLDumper.exe öncelikle belirli sorunları (özel durumlar, onaylar, verimsiz zamanlayıcılar gibi) çözmek için bir bellek dökümü gerekli olduğu senaryolarda SQL Server işlemi için bellek dökümü dosyaları oluşturmak için vardır. Bu gibi durumlarda, SQL Server işlemine ait bir bellek döküm dosyası oluşturmak için SQLDumper.exe çağırır. Varsayılan olarak, bellek dökümü dosyası SQL örneği MSSQL\LOG\ dizininde depolanır.

Varsayılan yolu değiştirme

Örneğin döküm dosyası boyutu çok büyükse, aşağıdakileri yaparak yolu değiştirebilirsiniz:

  1. SQL Server Yapılandırma Yöneticisi açın.
  2. SQL Server Hizmetleri'nin altında, araştırma aşamasında olan SQL Server örneğini bulun.
  3. Bu girdiye sağ tıklayın, Özellikler'i seçin ve Gelişmiş sekmesine gidin.
  4. Döküm Dizini'ni istediğiniz yola dönüştürüp Tamam'ı seçin.
  5. Yeni ayarın etkili olması için SQL Server (mümkün olduğunda) yeniden başlatın.

Sqldumper.exe aracı herhangi bir Windows uygulaması için döküm dosyası oluşturmak üzere el ile kullanıldığında, döküm dosyası Windows uygulamasının şu anda kullandığı bellek kadar büyük olabilir. Sqldumper.exe döküm dosyasını yazdığı sürücüde yeterli disk alanı olduğundan emin olun.

Komutta özel bir çıkış klasörü belirtin

Sqldumper.exe aracının döküm dosyasını yazmasını istediğiniz dizini belirtebilirsiniz. Sqldumper.exe çalıştırmadan önce dizinin zaten mevcut olması gerekir. Aksi takdirde Sqldumper.exe başarısız olur. Döküm dosyası için konum olarak UNC yolu kullanmayın. Aşağıda, mini döküm dosyasının döküm dosyası konumunun nasıl belirtileceğini gösteren bir örnek verilmiştir:

  1. Çalıştırmayı Başlat'ı> seçin, cmd yazın ve tamam'ı seçin.

  2. Komut isteminde aşağıdaki komutu yazın ve Enter tuşuna basın:

    cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
    
  3. Komut isteminde aşağıdaki komutu yazın ve Enter tuşuna basın:

    Sqldumper.exe ProcessID 0 0x0128 0 <MdumpPath>
    

    Not

    <MdumpPath> , Sqldumper.exe aracının döküm dosyasını yazmasını istediğiniz dizin için bir yer tutucudur. Varsayılan olarak, dosya geçerli klasöre yazılır.

Oluşturulacak tam döküm dosyasını veya filtrelenmiş döküm dosyasını belirtirseniz, Sqldumper.exe döküm dosyasının oluşturulması birkaç dakika sürebilir. Geçen süre aşağıdaki değişkenlere bağlıdır:

  • Sqlservr.exe şu anda kullandığı bellek miktarı.
  • Aracın döküm dosyasını yazdığı sürücünün hızı.

Bu süre boyunca Sqldumper.exe aracı komutları işlemez. Sunucunun yanıt vermeyi durdurduğunu fark edeceksiniz. Ayrıca, bir küme yük devretmesi oluşabilir.

İzin gereksinimleri

Sqldumper.exe çalıştırmak için aşağıdaki yöntemlerden birini kullanarak Windows'ta oturum açmanız gerekir:

  • Bilgisayardaki yönetici grubunun üyesi olan bir hesabı kullanın.
  • SQL Server hizmetinin çalıştığı kullanıcı hesabını kullanın.

Sqldumper.exe aracının Uzak Masaüstü veya Terminal Hizmetleri aracılığıyla başarıyla çalışması için Konsol modunda Uzak Masaüstü veya Terminal Hizmetleri'ni başlatmanız gerekir. Örneğin, Uzak Masaüstü'nü konsol modunda başlatmak içinÇalıştırmayıBaşlat'ı> seçin, mstsc /console yazın ve tamam'ı seçin. Hedef sunucu Windows 2000 çalıştırıyorsa , /console seçeneği sessizce yoksayılır. Uzak Masaüstü aracılığıyla sunucuya bağlanabilirsiniz, ancak konsol oturumunu kullanmayacaksınız.

Sqldumper.exe çalıştırdıktan sonra geçerli klasörde döküm dosyası oluşturulmadığını fark ederseniz, hatanın olası nedenini belirlemeye çalışmak için aracın komut satırında oluşturduğu bilgileri gözden geçirin. Bu bilgiler geçerli dizindeki Sqldumper_errorlog.log dosyasına da kaydedilir. İki olası hata iletisi ve bunların nedenleri şunlardır:

İleti Neden
"OpenProcess başarısız 0x57 - Parametre yanlış" Sqldumper.exe yardımcı programı için geçersiz bir İşlem Kimliği geçirildi.
"İş parçacığı kimliği için geçersiz değer - <geçersiz parametre> Parametre hatası" Sqldumper.exe yardımcı programı için geçersiz bir parametre geçirildi.

Aşağıdakilerden birine benzer bir hata iletisi oluşturulursa, bu iletiyi güvenle yoksayabilirsiniz:

  • "Minidump 6 sırasında bilinmeyen geri çağırma türü"
  • "Minidump 7 sırasında bilinmeyen geri çağırma türü"

Döküm oluşturmanın etkisi

Kullanıcı modu işleminin döküm dosyası istendiğinde (bu makalede açıklandığı gibi, kapsamımızın dışında olan İşletim Sistemi Çekirdek Dökümleri'nin aksine), hedef İşlem (burada SQLServer.exe) döküm içeriğini dosya hedefine seri hale getirmek için gereken süre boyunca dondurulur.

Dondurulması, Windows Kümeleme'nin IsAlive ve Etkin Görünüyor uygulaması gibi herhangi bir Kaynak Yoklama mekanizması da dahil olmak üzere işlemin herhangi bir kullanıcı isteğini veya herhangi bir iç işlemi çalıştıramayacağı anlamına gelir (bu durumun nasıl ele alınacağı hakkında ayrıntılı bilgi için küme yük devretmelerinde bellek dökümleri bölümüne bakın ). Duvar saati zamanına bağlı olan herhangi bir zaman aşımı da donma nedeniyle ihlal edilebilir.

Önceki deyimden türetilebileceği gibi, dondurmanın süresi bu nedenle buradaki kritik faktördür ve aşağıdakiler tarafından yönlendirilir:

  • Seçilen döküm türü .
  • Bellekteki SQL Server işleminin boyutudur ve varsayılan parametreleri çalıştıran tek bir etkin örnek söz konusu olduğunda genellikle sunucunun toplam fiziksel RAM'ine yakındır.
  • Döküm için hedef olarak kullanılan diskin performansı.

Ayrıca, disk üzerindeki döküm dosyasının boyutu , özellikle birden çok döküm mümkünse ve büyük, varsayılan olmayan döküm türleri seçilirse planlanmalıdır. Ne bekleyebileceğinizi öğrenmek için Döküm türlerini gözden geçirdiğinizden emin olun. Varsayılan olarak, bazı döküm yöntemleri dökümü SQL Server Örneğin \Log klasöründe oluşturur. Bu, varsayılan olarak basit yapılandırmada sistem diski ve SQL Server için data+log diski de olabilir. Diski doygunluğa getirmek, SQL Server ve/veya sistem kullanılabilirliği üzerinde ciddi bir etkiye sahip olacaktır.

Kümelenmiş sistemler üzerindeki etkiyi yönetme

Döküm oluşturma sırasında işlem geçici olarak askıya alınır. Bu, SQL Server hizmet kullanılabilirliğini etkileyebilir ve Her Zaman Açık bağlamlarında kaynakların yük devretmesini tetikleyebilir (yük devretme kümesi örneği ve Kullanılabilirlik grubu). Farklı işlemlerin döküm oluşturulması kaynakları farklı etkiler. Döküm oluşturma ve Döküm türleri bölümlerinin etkisi bölümünü dikkatle okuyun.

Yük devretme kümelenmiş örneğinde veya SQL Server kullanılabilirlik grubu (AG) örneğinde SQL Server dökümü yakalarken, döküm işleminin tamamlanması çok uzun sürerse kümelenmiş SQL Server veya AG başka bir düğüme yük devredebilir. Bu özellikle çok büyük miktarda RAM kullanan sistemlerde veya filtrelenmiş veya tam bellek dökümü oluşturuyorsanız sorun olabilir. Yük devretmeyi önlemek için döküm dosyasını yakalamadan önce aşağıdaki ayarları kullanın. Döküm dosyası alındıktan sonra değişiklik geri alınabilir:

  • Yük devretme kümelenmiş örneği (FCI) için:
    • Küme Yöneticisi'nde SQL Server kaynağa sağ tıklayın, İlkeler sekmesinde Kaynak başarısız olursa, yeniden başlatma'yı seçin.
    • Özellikler sekmesinde HealthCheck Zaman Aşımı'nı artırın. Örneğin, özellik değerini 180 saniye veya daha yüksek bir değere ayarlayın. Bu zaman aşımına ulaşılırsa, kaynak başarısız olursa, yeniden başlatma yok sayılır ve kaynak yine de yeniden başlatılır.
    • Özellikler sekmesinde FailureConditionLevel değerini sıfır olarak değiştirin.
  • AG için aşağıdaki tüm ayarları uygulayın:

SQL Server üzerindeki etkiyi azaltmak için ürün geliştirmeleri

Döküm dosyasının boyutunu ve/veya bellek dökümünü oluşturma süresini azaltmak için SQL Server son sürümlerine dört önemli geliştirme eklendi:

Bit eşlem filtreleme mekanizması

SQL Server, filtrelenmiş dökümden dışlanacak bellek sayfalarını izleyen bir bit eşlem ayırır. Sqldumper.exe bit eşlemi okur ve diğer bellek yöneticisi meta verilerini okumaya gerek kalmadan sayfaları filtreler. Bit eşlem sırasıyla etkinleştirildiğinde veya devre dışı bırakıldığında SQL Server hata günlüğünde aşağıdaki iletileri görürsünüz:

Page exclusion bitmap is enabled. Ve Page exclusion bitmap is disabled.

  • SQL Server 2016

    SQL Server 2016 SP2 CU13'den başlayarak bit eşlem filtreleme varsayılan olarak etkindir.

  • SQL Server 2017

    • Bu, CU15 üzerinden RTM'de kullanılamaz.
    • SQL Server 2017 CU16'da, T8089 aracılığıyla bit eşlem filtrelemesini etkinleştirebilir ve T8089'ı kapatarak devre dışı bırakabilirsiniz.
    • SQL Server 2017 CU20'den başlayarak bit eşlem filtreleme varsayılan olarak etkindir. İzleme bayrağı T8089 artık uygulanmaz ve açıksa yoksayılır. Bit eşlem filtrelemesi T8095 aracılığıyla devre dışı bırakılabilir.
  • SQL Server 2019

    Bu, SQL Server 2019 RTM'de varsayılan olarak etkindir. T8095 aracılığıyla devre dışı bırakılabilir.

Aynı sorundaki yinelenen dökümlerin ortadan kaldırılması

Aynı sorundaki yinelenen bellek dökümleri ortadan kaldırılır. Sql altyapısı, yığın imzası kullanarak bir özel durumun zaten oluşup oluşmadığını izler ve zaten bir özel durum varsa yeni bir bellek dökümü oluşturmaz. Bu, erişim ihlalleri, yığın taşması, onaylar ve dizin bozulması özel durumları için geçerlidir. Bu, bellek dökümleri tarafından kullanılan disk alanı miktarını önemli ölçüde azaltır ve döküm oluşturmak için işlemi geçici olarak dondurmaz. Bu, SQL Server 2019'da eklenmiştir.

Hata günlüğünde kısaltılmış çıkış

Tek bir bellek dökümünün SQL Server hata günlüğünde oluşturulan içerik yalnızca bunaltıcı olmakla kalmaz, aynı zamanda tüm bu bilgileri hata günlüğünde bir metin biçiminde seri hale getirmek için gereken süre nedeniyle bellek dökümü oluşturma işlemini de yavaşlatabilir. SQL Server 2019'da döküm oluşturma sırasında Hata günlüğünde depolanan içerik büyük ölçüde azaltılmıştır ve şöyle görünebilir:

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.

Daha önce SQL Server, kullanıcı tarafından el ile döküm tetiklendiğinde her oturum veya iş parçacığı için bilgileri yazdırıyordu.

Bellek dökümlerinin paralel sıkıştırması

Dökümleri daha hızlı oluşturmak ve boyutlarını küçültmek için SQL Server 2022 CU8 ve SQL Server 2019 CU23'te sıkıştırılmış bir bellek dökümü özelliği kullanıma sunulmuştur. etkinleştirildiğinde, Sqldumper.exe bir işlemin belleğini aynı anda okumak için birden çok iş parçacığı oluşturur, sıkıştırır ve sonra döküm dosyasına kaydeder. Bu çok iş parçacıklı paralel sıkıştırma, tam ve filtrelenmiş dökümlerle kullanıldığında dosya boyutunu azaltır ve döküm işlemini hızlandırır.

Sıkıştırılmış bellek dökümünü etkinleştirmek için izleme bayrağı 2610'u açabilirsiniz:

DBCC TRACEON (2610,-1)
GO
DBCC STACKDUMP with FILTERED_DUMP
GO
DBCC TRACEOFF (2610,-1)

Alternatif olarak, her zaman sıkıştırılmış bellek dökümleri oluşturması için SQL Server örneğinize başlangıç parametresi olarak ekleyebilirsiniz-T2610.

Sqldumper.exe el ile çalıştırırsanız, sıkıştırılmış bellek dökümünü -zdmp yakalamak için parametresini kullanabilirsiniz. Örneğin:

Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp

Ayrıca, Sqldumper.exe sıkıştırılmış dökümü oluşturmak için kullanabileceği çekirdek sayısını sınırlamak için parametresini -cpu:X kullanabilirsiniz; burada X , CPU sayısıdır. Bu parametre yalnızca komut satırından Sqldumper.exe el ile çalıştırdığınızda kullanılabilir:

Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp -cpu:8

Bellek dökümlerinin oluşturulmasını engelleyen veya geciktiren faktörler

Aşağıdaki faktörlerin gecikmelere neden olduğu veya bellek dökümlerinin oluşturulmasını önlediği bilinmektedir.

  • Bellek dökümlerinin yazıldığı GÇ yolu kötü performans gösterir. Bu gibi durumlarda, disk G/Ç performansını araştırmak ve çözümlemek bir sonraki mantıksal adımdır.
  • Virüsten koruma veya başka bir izleme yazılımı SQLDumper.exe engelliyor. Bazı durumlarda, üçüncü taraf yazılım ReadProcessMemory işlevini değiştirir. Bu, döküm süresini önemli ölçüde artırabilir. Bu sorunların çoğunu çözmek için engelleyici yazılımı devre dışı bırakın veya dışlama listesine SQLDumper.exe ekleyin.

Döküm türleri

Aşağıdaki yöntemler üç farklı döküm türü oluşturmak için kullanılabilir: mini dökümler, tam dökümler ve filtrelenmiş dökümler.

Başvuruda bulunan belleğe sahip mini dökümler

Bu tür bir bellek dökümü, işlemin tüm etkin iş parçacıklarının ("iş parçacığı yığınları") anlık görüntüsü ve iş parçacığı yığınları ve diğer bazı önemli işlem veya iş parçacığı verileri tarafından başvurulan belleğin sınırlı bir ayıklanmasıdır. Genellikle birkaç megabayt boyutundadır ve oluşturması hızlıdır (bir saniyeden birkaç saniyeye kadar). Daha büyük sunucu sistemleri bile (SQL Server işlemde dolaylı olarak çok sayıda iş parçacığını yönlendiren yüzlerce CPU ile) nadiren 20-30 MB'ı aşar: mini döküm boyutu, SQL Server işleminin boyutuyla büyümez. Bu döküm türü, özel durumlarda, zamanlayıcı sorunlarında, mandal sorunlarında, veritabanı bozulmasında, onaylarda otomatik olarak bellek dökümleri oluştururken SQL Server tarafından kullanılan varsayılan türdür.

Not

SQL Server, yerleşik izlemesinin bir parçası olarak bazı belirli durumlarda otomatik "tanılama mini dökümleri" oluşturur. Bu nedenle bu işlem, SQL Server gerektiğinde otomatik olarak tetikleyebileceği kadar güvenli kabul edilir.

Tam dökümler

Tam bellek dökümü, etkin hedef işlem alanının tam bir kopyasıdır. Bu nedenle tüm iş parçacığı durumu, tüm işlem ayrılmış belleği ve tüm yüklenen modülleri içerir. Bu nedenle tam dökümlerin boyutu kabaca SQL Server işlemiyle aynıdır ve bu da toplam sistem RAM'i kadar büyük olabilir. Tek bir SQL Server örneğine ayrılmış büyük sunucularda bu, birkaç yüzlerce gigabayt veya daha fazla olan bir dosya anlamına gelebilir. Söylemeye gerek yok, böyle bir dosyanın oluşturulması uzun sürer ve bu nedenle uzun süreli donmaya neden olur. Döküm dosyasının dosya hedefi için disk performansı, donma süresini önemli ölçüde etkiler. Bu döküm türü, aşağıdaki açıklamalarda açıklandığı gibi günümüzde SQL Server için nadiren kullanılmaktadır.

Filtrelenmiş dökümler

SQL Server çalışan tipik sunucuların RAM boyutu giderek arttıkça, tam dökümler daha değişken hale gelir. Bu nedenle filtrelenmiş dökümler uygulanır. Filtrelenmiş döküm, SQL Server belleğin büyük alanlarının anında dışlandığı ve diske yazılmadığı bir tam döküm alt kümesidir. Genellikle dışlanan bellek, sorun gidermeye ek değer getirmez. Veri/dizin sayfaları ve Hekaton veri sayfaları ve Günlük Havuzu belleği gibi bazı iç önbellekler buna örnek olarak verilebilir. Bu filtrelenmiş döküm, tam dökümden daha küçük bir dosyayla sonuçlanır, ancak döküm yine de neredeyse tüm yararlılığını korur. Filtrelenmiş dökümler, mini dökümlerin yeterli olmadığı çoğu durumda tercih edilen seçenek olarak tam dökümlerin yerini aldı. Boyutun azalması tam döküme göre farklılık gösterebilir, ancak yine de genellikle SQL Server işlem boyutunun %30-60'ını oluşturan oldukça büyük bir dosyadır. Bu nedenle, iyi bir güvenlik marjı bırakan en kötü seçenek olarak tam döküm kadar büyük olası bir boyut planlamak en iyisidir. Filtrelenmiş döküm her durumda tam dökümden daha hızlı oluşturulamayabilir: Önlenen GÇ sayısıyla ilgili kazançların filtre mantığını uygulamak için gereken süreyi aşıp aşmadığıyla ilgilidir (disk hızı ve CPU/RAM hızı bunu etkiler).

Filtrelenmiş döküm boyutunun kabaca tahminini almak için aşağıdaki sorguyu kullanabilirsiniz. Veri veya dizin sayfalarının çoğunun dökümden dışlanması beklense de, özel olarak mandallanan ve değiştirilenler atlanmaz.

SELECT SUM(pages_kb)
FROM sys.dm_os_memory_clerks
WHERE type != 'MEMORYCLERK_SQLBUFFERPOOL'

Sqldumper.exe kullanarak herhangi bir Microsoft Windows uygulaması için isteğe bağlı döküm dosyası oluşturabildiğiniz için filtrelenmiş döküm seçeneğini kullanmayı düşünebilirsiniz. Ancak, filtrelenmiş döküm dosyası yalnızca SQL Server bağlamında uygulanabilir ve anlamlıdır. Yine de mini döküm, tam döküm dosyası veya SQL Server olmayan uygulamaları başarıyla oluşturabilirsiniz.

SQL Server işlemi, işlem herhangi bir özel durumla karşılaştığında döküm dosyası oluşturmak için Sqldumper.exe aracını dahili olarak çağırır. SQL Server parametreleri Sqldumper.exe geçirir. bir özel durum veya onay oluştuğunda SQL Server varsayılan olarak araca geçirdiği parametreleri değiştirmek için izleme bayraklarını kullanabilirsiniz. Bu izleme bayrakları 2540 ile 2559 aralığındadır. Oluşturmak SQLDumper.exe varsayılan döküm türünü değiştirmek için bu izleme bayraklarından birini kullanabilirsiniz (varsayılan, başvurulan belleğe sahip bir mini dökümdür). Örneğin:

  • İzleme Bayrağı 2551: Filtrelenmiş bir bellek dökümü oluşturur.
  • İzleme Bayrağı 2544: Tam bellek dökümü oluşturur.
  • İzleme Bayrağı 8026: SQL Server dökümü bir kez oluşturarak döküm tetikleyicisini temizler.

İki veya daha fazla izleme bayrağı etkinse, en büyük bellek dökümünü gösteren seçenek kabul edilir. Örneğin, izleme bayrakları 2551 ve 2544 kullanılırsa, SQL Server tam bellek dökümü oluşturur.

Küme yük devretmelerinde bellek dökümü oluşturma

Küme yük devretme senaryolarında SQL Server kaynak DLL'i, sorun gidermeye yardımcı olmak için yük devretme gerçekleşmeden önce bir döküm dosyası alabilir. SQL Server kaynak DLL'i bir SQL Server kaynağının başarısız olduğunu belirlediğinde, SQL Server kaynak DLL'i SQL Server işleminin döküm dosyasını almak için Sqldumper.exe yardımcı programını kullanır. Sqldumper.exe aracının döküm dosyasını başarıyla oluşturduğundan emin olmak için aşağıdaki üç özelliği önkoşul olarak ayarlamanız gerekir:

  • SqlDumperDumpTimeOut

    Kullanıcı tarafından belirtilen zaman aşımı. Kaynak DLL,kaynak DLL SQL Server hizmetini durdurmadan önce döküm dosyasının tamamlanmasını bekler.

  • SqlDumperDumpPath

    Sqldumper.exe aracının döküm dosyasını oluşturduğu konum.

  • SqlDumperDumpFlags

    Sqldumper.exe kullandığı bayraklar.

Özelliklerden herhangi biri ayarlanmadıysa, Sqldumper.exe döküm dosyasını oluşturamaz. Kaynak her çevrimiçi duruma getirildiğinde hem olay günlüğüne hem de küme günlüğüne bir uyarı iletisi kaydedilir.

SQL Server 2012 ve sonraki sürümlerde SQLDumper için küme yapılandırması

Bu özellikleri değiştirmek için (T-SQL) komutunu kullanabilirsiniz ALTER SERVER CONFIGURATION . Örneğin:

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;

Alternatif olarak, PowerShell betiklerini kullanabilirsiniz. Örneğin, adlandırılmış örnek için 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

Ayarların uygulandığını doğrulamak için şu PowerShell komutunu çalıştırabilirsiniz:

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

SQL Server 2008/2008 R2 veya Windows 2012 ve önceki sürümlerde SQLDumper için küme yapılandırması

Küme kaynağı komutunu kullanarak küme yük devretmesi için Sqldumper.exe yardımcı programı özelliklerini ayarlamak için şu adımları izleyin:

  1. Çalıştırmayı Başlat'ı> seçin, cmd yazın ve tamam'ı seçin.
  2. Her özellik için komut istemine karşılık gelen komutu yazın ve Enter tuşuna basın:
    • SqlDumperDumpFlags özelliği

      Belirli bir döküm dosyasının SqlDumperDumpFlags özelliğini ayarlamak için komut istemine karşılık gelen komutu yazın ve enter tuşuna basın:

      • Tüm iş parçacığı tam döküm dosyası

        • Varsayılan örnek

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x01100
          
        • Adlandırılmış örnek

          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x01100
          
      • Tüm iş parçacığı mini döküm dosyası

        • Varsayılan örnek

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x0120
          
        • Adlandırılmış örnek

          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x0120
          
      • Tüm iş parçacığı döküm dosyası filtrelendi

        • Varsayılan örnek

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x8100
          
        • Adlandırılmış örnek

          cluster resource "SQL Server  (INSTANCE1)" /priv SqlDumperDumpFlags = 0x8100
          
    • SqlDumperDumpPath özelliği

      cluster resource "SQL Server" /priv SqlDumperDumpPath = <DirectoryPath>
      

      Not

      <DirectoryPath> , döküm dosyasının oluşturulacağı dizin için bir yer tutucudur ve tırnak işaretleri (" ") içinde belirtilmelidir.

    • SqlDumperDumpTimeOut özelliği

      cluster resource "SQL Server" /priv SqlDumperDumpTimeOut = <Timeout>
      

      Not

      <Zaman aşımı> milisaniye (ms) cinsinden zaman aşımı için bir yer tutucudur.

Aracın bir SQL Server işleminin döküm dosyasını oluşturma süresi bilgisayar yapılandırmasına bağlıdır. Çok fazla hafızası olan bir bilgisayar için zaman önemli olabilir. İşlemin süresiyle ilgili bir tahmin elde etmek için Sqldumper.exe aracını kullanarak el ile döküm dosyası oluşturun. özelliği için SqlDumperDumpTimeOut geçerli değerler 10.000 ms'denMAXDWORD'a kadardır. MAXDWORD , DWORD veri türü (4294967295) aralığındaki en yüksek değeri temsil eder.

Ayarların etkinleştirildiğini doğrulamak için aşağıdaki komutu çalıştırabilirsiniz:

cluster resource "SQL Server" /priv

Küme yük devretmesi için Sqldumper.exe özelliklerini kaldırma

Küme yük devretmesi için Sqldumper.exe aracı özelliklerini kaldırmak için şu adımları izleyin:

  1. Çalıştırmayı Başlat'ı> seçin, cmd yazın ve tamam'ı seçin.
  2. Belirli bir özellik için komut istemine karşılık gelen komutu yazın ve enter tuşuna basın:
    • SqlDumperDumpFlags özelliği

      • Varsayılan örnek

          cluster resource "SQL Server" /priv:SqlDumperDumpFlags /usedefault
        
      • Adlandırılmış örnek

          cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpFlags /usedefault
        
    • SqlDumperDumpPath özelliği

      • Varsayılan örnek

        cluster resource "SQL Server" /priv:SqlDumperDumpPath /usedefault
        
      • Adlandırılmış örnek

        cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpPath /usedefault
        
    • SqlDumperDumpTimeOut özelliği

      • Varsayılan örnek

        cluster resource "SQL Server" /priv:SqlDumperDumpTimeOut /usedefault
        
      • Adlandırılmış örnek

        cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpTimeOut /usedefault
        

DBCC STACKDUMP'yi kullanma

komutu, DBCC STACKDUMP SQL Server örneği yüklemenizin LOG dizininde bir bellek dökümü oluşturmanıza yardımcı olabilir. komutu varsayılan olarak, boyutu sınırlı olan ve SQL Server işleminin durumunu yansıtmak için yeterli olan tüm iş parçacıklarıyla bir minidump oluşturur. SQL Server istemcisinde aşağıdaki komutu çalıştırın:

DBCC STACKDUMP

SQL Server 2019'da genişletilmiş işlevselliği DBCC STACKDUMP için bkz. SQL Server 2019'da sunulan Genişletilmiş DBCC STACKDUMP işlevselliği.

Bu yöntemin filtrelenmiş döküm oluşturmasını etkinleştirmek için aşağıdaki komutu kullanarak izleme bayrakları 2551'i açın:

DBCC TRACEON(2551, -1)
GO
DBCC STACKDUMP

Tam döküm oluşturmak için 2544 izleme bayrağını kullanın.

Döküm dosyasını aldıktan sonra, otomatik tanılama minidumlarını daha büyük dökümlere SQL Server yanlışlıkla yükseltmekten kaçınmak için komutunu DBCC TRACEOFF (<TraceNumber>, -1); kullanarak izleme bayrağını devre dışı bırakmanız gerekir. Komutta TraceNumber>, <daha önce 2551 veya 2544 gibi etkinleştirdiğiniz izleme bayrağıdır. Örneğin:

DBCC TRACEOFF(2551, -1)

Hangi izleme bayrağının etkin kaldığından emin değilseniz aşağıdaki komutu çalıştırın:

DBCC TRACESTATUS(-1)

Boş bir sonuç kümesi hiçbir izleme bayrağının etkin olmadığını gösterir. Buna karşılık, 2551 hala etkinse şunları görürsünüz:

TraceFlag Durum Genel Oturum
2551 1 1 0

Not

tarafından traceflag etkinleştirildi DBCC TRACEON , bir hizmet yeniden başlatıldıktan sonra sıfırlanır (kaldırılır).

SQL Server 2019'da kullanıma sunulan genişletilmiş DBCC STACKDUMP işlevselliği

SQL Server 2019 CU2'den başlayarak komut, DBCC STACKDUMP mini, filtrelenmiş ve tam dökümler gibi farklı türlerdeki dökümlerin oluşturulmasını destekleyecek şekilde genişletildi. Bu komut, izleme bayraklarını kullanma gereksinimini ortadan kaldırır. Ayrıca, bellek dökümüyle oluşturulan diğer metin dosyasındaki metin çıkışını sınırlamanıza da olanak tanır. Bunu yapmak, bellek dökümü oluşturmak için SQLDumper.exe geçen sürede görünür performans kazancı sağlayabilir.

DBCC STACKDUMP WITH MINI_DUMP | FILTERED_DUMP | FULL_DUMP [, TEXT_DUMP = LIMITED | DETAILED]

TEXT_DUMP = LIMITED varsayılan seçenektir. SQLDump000X.txt dosyasında ayrıntılı çıktı almak isterseniz kullanabilirsinizTEXT_DUMP = DETAILED.

.txt dosyasında sınırlı çıkışa sahip filtrelenmiş bir döküm oluşturmak için aşağıdaki komutu çalıştırın:

DBCC STACKDUMP WITH FILTERED_DUMP , TEXT_DUMP = LIMITED

SQLDumper ile döküm dosyası oluşturmak için PowerShell betiğini kullanma

  • Aşağıdaki kodu ps1 dosyası olarak kaydedin, örneğin SQLDumpHelper.ps1:

    Kod ayrıntıları

    $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."
    
  • Aşağıdaki komutu kullanarak Komut İstemi'nden yönetici olarak çalıştırın:

    Powershell.exe -File SQLDumpHelper.ps1
    
  • Veya Windows PowerShell konsolundan çalıştırın ve aşağıdaki komutu kullanarak yönetici olarak çalıştırın:

    .\SQLDumpHelper.ps1
    

Not

Sisteminizde PowerShell betiklerini hiç çalıştırmadıysanız aşağıdaki hata iletisini alabilirsiniz:

"Bu sistemde çalışan betikler devre dışı bırakıldığından dosya ...SQLDumpHelper.ps1 yüklenemiyor."

Komutları çalıştırma özelliğini etkinleştirmek için şu adımları izleyin:

  1. Yönetici Olarak Çalıştır seçeneğini kullanarak Windows PowerShell konsolunu başlatın. Yürütme ilkesini yalnızca bilgisayardaki yöneticiler grubunun üyeleri değiştirebilir.

  2. Aşağıdaki komutla imzalanmamış betiklerin çalıştırılmasını etkinleştirin:

    Set-ExecutionPolicy RemoteSigned
    

    Not

    Bu, yerel bilgisayarınızda oluşturduğunuz imzalanmamış betikleri ve İnternet'ten imzalanmış betikleri çalıştırmanızı sağlar.