Aracılığıyla paylaş


sqlmaint yardımcı programı

Şunlar için geçerlidir: SQL Server

sqlmaint yardımcı programı, bir veya daha fazla veritabanında belirtilen bir dizi bakım işlemi gerçekleştirir. Denetimleri çalıştırmak, veritabanını ve işlem günlüğünü yedeklemek, istatistikleri güncelleştirmek ve dizinleri yeniden oluşturmak için DBCC kullanın. Tüm veritabanı bakım etkinlikleri, belirlenen bir metin dosyasına, HTML dosyasına veya e-posta hesabına gönderebileceğiniz bir rapor oluşturur. sqlmaint , SQL Server'ın önceki sürümlerinde oluşturulan veritabanı bakım planlarını yürütür. Komut isteminden SQL Server bakım planlarını çalıştırmak için dtexec Yardımcı Programı'nı kullanın.

Önemli

Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine SQL Server bakım planı özelliğini kullanın. Bakım planları hakkında daha fazla bilgi için bkz . Bakım planları.

Sözdizimi

sqlmaint
[ -? ] |
[
     [ -S server_name [ \instance_name ] ]
     [ -U login_ID [ -P password ] ]
     {
          [ -D database_name | -PlanName name | -PlanID guid ]
          [ -Rpt text_file ]
          [ -To operator_name ]
          [ -HtmlRpt html_file [ -DelHtmlRpt <time_period> ] ]
          [ -RmUnusedSpace threshold_percentfree_percent ]
          [ -CkDB | -CkDBNoIdx ]
          [ -CkAl | -CkAlNoIdx ]
          [ -CkCat ]
          [ -UpdOptiStats sample_percent ]
          [ -RebldIdx free_space ]
          [ -SupportComputedColumn ]
          [ -WriteHistory ]
          [
               { -BkUpDB [ backup_path ] | -BkUpLog [ backup_path ] }
               { -BkUpMedia
                    { DISK [
                           [ -DelBkUps <time_period> ]
                           [ -CrBkSubDir ]
                           [ -UseDefDir ]
                          ]
                     | TAPE
                    }
               }
               [ -BkUpOnlyIfClean ]
               [ -VrfyBackup ]
          ]
     }
]
<time_period> ::=
number [ minutes | hours | days | weeks | months ]

Tartışmalar

Parametreleri ve değerlerini bir boşlukla ayırın. Örneğin, ve -S arasında bir boşluk ekleyin.

-?

sqlmaint için söz dizimi diyagramını döndürür. Bu parametreyi kendi başına kullanın.

-S server_name[\instance_name]

SQL Server'ın hedef örneğini belirtir. Bu sunucudaki varsayılan SQL Server Veritabanı Altyapısı örneğine bağlanmak için belirtin <server_name> . Bu sunucuda Veritabanı Motoru'nun adlandırılmış bir örneğine bağlanılması için <server_name>\<instance_name> belirtin. Bir sunucu belirtmezseniz , sqlmaint yerel bilgisayardaki Veritabanı Altyapısı'nın varsayılan örneğine bağlanır.

-U login_ID

Sunucuya bağlanırken kullanılacak hesabı belirtir. Bu parametreyi sağlamazsanız sqlmaint , Windows kimlik doğrulamasını kullanmayı dener. login_ID özel karakterler içeriyorsa, çift tırnak içine alın ("); aksi takdirde çift tırnak işaretleri isteğe bağlıdır.

Önemli

Mümkün olduğunda Windows kimlik doğrulamayı kullanın.

-P parola

login_ID parolasını belirtir. Bu parametre, -U parametresini de sağlarsanız geçerlidir. Parola özel karakterler içeriyorsa, çift tırnak işareti içerisine alın; aksi takdirde çift tırnak işareti kullanımı isteğe bağlıdır.

Önemli

Parola maskelenmez. Mümkün olduğunda Windows kimlik doğrulamayı kullanın.

-D database_name

Bakım işleminin gerçekleştirildiği veritabanının adını belirtir. database_name özel karakterler içeriyorsa, çift tırnak içine alın; aksi takdirde, çift tırnak işaretleri isteğe bağlıdır.

-PlanName adı

Veritabanı Bakım Planı Sihirbazı kullanılarak tanımlanan veritabanı bakım planının adını belirtir. Sqlmaint'in planda kullandığı tek bilgi, plandaki veritabanlarının listesidir. Diğer sqlmaint parametrelerinde belirttiğiniz tüm bakım etkinlikleri bu veritabanı listesine uygulanır.

-PlanID guid

Veritabanı Bakım Planı Sihirbazı kullanılarak tanımlanan veritabanı bakım planının genel benzersiz tanımlayıcısını (GUID) belirtir. Sqlmaint'in kullandığı tek bilgi, plandaki veritabanlarının listesidir. Diğer sqlmaint parametrelerinde belirttiğiniz tüm bakım etkinlikleri bu veritabanı listesine uygulanır. Bu değer, msdb.dbo.sysdbmaintplans içindeki bir plan_id değerle eşleşmelidir.

-Rpt text_file

Oluşturulan raporun tam yolunu ve dosya adını belirtir. Rapor ekranda da oluşturulur. Rapor, dosya adına bir tarih ekleyerek sürüm bilgilerini korur. Tarih aşağıdaki gibi, dosya adının sonunda, ancak dönemden önce biçiminde _<yyyyMMddhhmm>oluşturulur. <yyyy> = yıl, <MM> = ay, <dd> = gün, <hh> = saat, <mm> = dakika.

1 Aralık 1996'da saat 10:23'te yardımcı programı çalıştırırsanız ve bu metin_dosyası değeridir:

C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.rpt

Oluşturulan dosya adı:

C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint_199612011023.rpt

sqlmaint uzak sunucuya eriştiğinde text_file için tam Evrensel Adlandırma Kuralı (UNC) dosya adı gereklidir.

-To operator_name

Oluşturulan raporun SQL Mail aracılığıyla gönderileceği işleci belirtir.

-HtmlRpt html_file

HTML raporunun oluşturulduğu dosyanın tam yolunu ve adını belirtir. sqlmaint, dosya adını oluştururken, -Rpt parametresi için yaptığı gibi, _<yyyyMMddhhmm> biçiminde bir dizeyi dosya adına ekler.

sqlmaint uzak sunucuya eriştiğinde html_file için tam UNC dosya adı gereklidir.

-DelHtmlRpt <time_period>

Rapor dosyasının oluşturulmasından sonraki zaman aralığı time_period aşarsa rapor dizinindeki tüm HTML raporunu siler. -DelHtmlRpt adı html_file parametresinden oluşturulan desene uyan dosyaları arar. Eğer html_fileC:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm ise, -DelHtmlRptsqlmaint'in adları desenle C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm eşleşen ve belirtilen time_period'den daha eski olan tüm dosyaları silmesine neden olur.

-RmUnusedSpace threshold_percent free_percent

kullanılmayan alanın içinde -Dbelirtilen veritabanından kaldırıldığını belirtir. Bu seçenek yalnızca otomatik olarak büyümek üzere tanımlanan veritabanları için kullanışlıdır. Threshold_percent, sqlmaint kullanılmayan veri alanını kaldırmaya çalışmadan önce veritabanının erişmesi gereken boyutu megabayt olarak belirtir. Veritabanı threshold_percent küçükse hiçbir işlem yapılmaz. Free_percent , veritabanının son boyutunun yüzdesi olarak belirtilen, veritabanında ne kadar kullanılmayan alanın kalması gerektiğini belirtir.

Örneğin, 200 MB'lık bir veritabanı 100 MB veri içeriyorsa, free_percent için 10 belirtilmesi, veritabanı boyutunun son boyutunun 110 MB olmasına neden olur. Veritabanı, free_percent artı veritabanındaki veri miktarı toplamından küçükse genişletilmez. Örneğin, 108 MB'lık bir veritabanında 100 MB veri varsa, free_percent için 10 belirtilmesi veritabanını 110 MB'a genişletmez; 108 MB olarak kalır.

-CkDB | -CkDBNoIdx

DBCC CHECKDB deyiminin veya seçeneğine sahip bir DBCC CHECKDB deyiminin NOINDEX içinde -Dbelirtilen veritabanında çalıştırıldığını belirtir.

sqlmaint , veritabanının çalıştığında kullanımda olup olmadığını text_file için bir uyarı yazar.

-CkAl | -CkAlNoIdx

seçeneğine sahip bir DBCC CHECKALLOC deyiminin NOINDEX içinde -Dbelirtilen veritabanında çalıştırıldığını belirtir.

-CkCat

DBCC CHECKCATALOG deyiminin içinde -Dbelirtilen veritabanında çalıştırıldığını belirtir.

-UpdOptiStats sample_percent

Aşağıdaki deyimin veritabanındaki her tabloda çalıştırıldığını belirtir:

UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;

Tablolar hesaplanan sütunlar içeriyorsa, -SupportedComputedColumn kullanırken -UpdOptiStats bağımsız değişkenini de belirtmeniz gerekir.

Daha fazla bilgi için bkz. UPDATE STATISTICS.

-RebldIdx free_space

Hedef veritabanındaki tablolardaki dizinlerin, doldurma faktörünün tersi olarak free_space yüzde değeri kullanılarak yeniden oluşturulması gerektiğini belirtir. Örneğin, free_space yüzdesi 30 ise, kullanılan doldurma faktörü 70'tir. 100 free_space yüzde değeri belirtilirse, dizinler özgün doldurma faktörü değeriyle yeniden oluşturulur.

Dizinler hesaplanan sütunlardaysa, -RebldIdx kullanırken -SupportComputedColumn bağımsız değişkenini de belirtmeniz gerekir.

-DestekHesaplananSütun

DBCC bakım komutlarını sqlmaint ile çalıştırmak için belirtilmelidir.

-GeçmişYaz

msdb.dbo.sysdbmaintplan_history tarafından gerçekleştirilen her bakım eylemi için içinde bir giriş yapıldığını belirtir. Eğer -PlanName veya -PlanID belirtilmişse, sysdbmaintplan_history içindeki girdiler belirtilen planın kimliğini kullanır. Eğer -D belirtilmişse, sysdbmaintplan_history içindeki girdiler plan kimliği için sıfırlarla oluşturulur.

-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]

Bir yedekleme eylemi belirtir. -BkUpDb veritabanının tamamını yedekler. -BkUpLog yalnızca işlem günlüğünü yedekler.

backup_path yedekleme için dizini belirtir. backup_path de belirtilirse -UseDefDir gerekli değildir ve -UseDefDir her ikisi de belirtilirse backup_path geçersiz kılar. Yedekleme bir dizine veya bant cihazı adresine (örneğin, \\.\TAPE0) yerleştirilebilir. Veritabanı yedeklemesinin dosya adı aşağıdaki gibi otomatik olarak oluşturulur:

dbname_db_yyyyMMddhhmm.BAK

Where:

  • <dbname> , yedeklenen veritabanının adıdır.
  • <yyyyMMddhhmm>, <yyyy> = yıl, <MM> = ay, <dd> = gün, <hh> = saat ve <mm> = dakika ile yedekleme işleminin zamanıdır.

İşlem yedeklemesinin dosya adı benzer biçimde otomatik olarak oluşturulur:

dbname_log_yyyymmddhhmm.BAK

Eğer -BkUpDB parametresini kullanıyorsanız, -BkUpMedia parametresini kullanarak medyayı da belirtmeniz gerekir.

-BkUpMedia

Yedeklemenin DISK veya TAPE ortam türünü belirtir.

DISK

Yedekleme medyasının disk olduğunu belirtir.

-DelBkUps <time_period>

Disk yedeklemeleri için, yedekleme oluşturulduktan sonraki zaman aralığı time_period aşarsa yedekleme dizinindeki herhangi bir yedekleme dosyasının silindiğini belirtir.

-CrBkSubDir

Disk yedeklemeleri için, backup_path dizininde veya -UseDefDir de belirtilmişse varsayılan yedekleme dizininde bir alt dizin oluşturulmasını belirtir. Alt dizinin adı, içinde -Dbelirtilen veritabanı adından oluşturulur. -CrBkSubDir , backup_path parametresini değiştirmek zorunda kalmadan farklı veritabanları için tüm yedeklemeleri ayrı alt dizinlere yerleştirmenin kolay bir yolunu sunar.

-UseDefDir

Disk yedeklemeleri için, yedekleme dosyasının varsayılan yedekleme dizininde oluşturulduğunu belirtir. UseDefDir her ikisi de belirtilirse backup_path geçersiz kılar. Varsayılan SQL Server kurulumuyla, varsayılan yedekleme dizini şeklindedir C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.

BANT

Yedekleme medyasının bant olduğunu belirtir.

-YalnızcaTemizseYedekle

Yedeklemenin yalnızca belirtilen -Ck denetimlerde verilerle ilgili sorunlar bulunamazsa gerçekleşdiğini belirtir. Bakım eylemleri, komut isteminde göründükleri sırayla çalışır. Belirtecekseniz, -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, veya -CkTxtAl, -CkCat parametrelerini, -BkUpOnlyIfClean uygulamalarında -BkUpDB veya -BkUpLog parametrelerinden önce belirtin. Bu parametreleri belirtmezseniz, denetim sorunları bildirse de bildirmese de yedekleme gerçekleşir.

-VrfyBackup

RESTORE VERIFYONLY Tamamlandığında yedeklemede bunun çalıştırıldığını belirtir.

sayı [ dakika| saat| gün| hafta| ay ]

Bir raporun veya yedekleme dosyasının silinecek kadar eski olup olmadığını belirlemek için kullanılan zaman aralığını belirtir. sayı , bir zaman birimi tarafından izlenen (boşluksuz) bir tamsayıdır. Geçerli örnekler:

  • 12weeks
  • 3months
  • 15days

Yalnızca sayı belirtirseniz, varsayılan tarih bölümü olur weeks.

Açıklamalar

sqlmaint yardımcı programı bir veya daha fazla veritabanında bakım işlemleri gerçekleştirir. Belirttiğiniz takdirde -D, yardımcı program yalnızca belirtilen veritabanında kalan anahtarlarla belirtilen işlemleri gerçekleştirir. veya -PlanNamebelirtirseniz -PlanID, sqlmaint'in belirtilen bakım planından aldığı tek bilgi, plandaki veritabanlarının listesidir. Kalan sqlmaint parametrelerinde belirtilen tüm işlemler, plandan alınan listedeki her veritabanına uygulanır. sqlmaint yardımcı programı, planın kendisinde tanımlanan bakım etkinliklerinden hiçbirini uygulamaz.

sqlmaint yardımcı programı, başarıyla çalıştırılırsa 0 veya başarısız olursa 1 döndürür. Şu durumda hata bildirilir:

  • Bakım eylemlerinden herhangi biri başarısız olur.

  • -CkDB, -CkDBNoIdx, , -CkAl, -CkAlNoIdx, -CkTxtAlveya -CkCat denetimleri verilerle ilgili sorunları bulur.

  • Genel bir hatayla karşılaşıldı.

İzinler

Okuma ve Yürütme izni olan sqlmaint.exe tüm Windows kullanıcıları sqlmaint yardımcı programını yürütebilir. Varsayılan olarak, sqlmaint.exe klasöründe depolanır <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn . Ayrıca, belirttiğiniz -login_ID SQL Server oturum açma bilgilerinin belirtilen eylemi gerçekleştirmek için gereken SQL Server izinlerine sahip olması gerekir. SQL Server'a bağlanmak için Windows kimlik doğrulaması kullanıyorsanız, kimliği doğrulanmış Windows kullanıcısına eşlenen SQL Server oturum açma bilgilerinin belirtilen eylemi gerçekleştirmek için gereken SQL Server izinlerine sahip olması gerekir.

Örneğin, -BkUpDB'ü kullanmak, BACKUP ifadesini yürütmek için izin gerektirir. -UpdOptiStats bağımsız değişkeninin kullanılması, UPDATE STATISTICS deyimini yürütmek için izin gerektirir. Daha fazla bilgi için bkz. İzinler (Veritabanı Altyapısı).

Örnekler

A. Veritabanında DBCC denetimleri gerçekleştirme

Bu örnek bir veritabanı üzerinde kontrolleri gerçekleştirir DBCC.

sqlmaint -S MyServer -D AdventureWorks2022 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt

B. İstatistikleri güncelleştirme

Bu örnek, bir plandaki tüm veritabanlarında 15% örneği kullanarak istatistikleri güncelleştirir. 110 MB'a ulaşan tüm veritabanları yalnızca 10% boş alana sahip olacak şekilde küçültülür.

sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10

C. Tüm veritabanlarını yedekleme

Bu örnek, varsayılan <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup dizini kullanarak bir plandaki tüm veritabanlarını kendi alt dizinlerine yedekler. Ayrıca iki haftadan eski yedeklemeleri de siler.

sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks

D. Veritabanını yedekleme

Bu örnek, tek bir veritabanını varsayılan <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup dizine yedekler.

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir