Bagikan melalui


utilitas sqlmaint

Berlaku untuk:SQL Server

Utilitas sqlmaint melakukan serangkaian operasi pemeliharaan tertentu pada satu atau beberapa database. Gunakan sqlmaint untuk menjalankan DBCC pemeriksaan, mencadangkan database dan log transaksinya, memperbarui statistik, dan membangun kembali indeks. Semua aktivitas pemeliharaan database menghasilkan laporan yang dapat Anda kirim ke file teks, file HTML, atau akun email yang ditunjuk. sqlmaint menjalankan rencana pemeliharaan database yang dibuat di versi SQL Server sebelumnya. Untuk menjalankan rencana pemeliharaan SQL Server dari prompt perintah, gunakan Utilitas dtexec.

Penting

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan fitur rencana pemeliharaan SQL Server sebagai gantinya. Untuk informasi selengkapnya tentang rencana pemeliharaan, lihat Rencana pemeliharaan.

Sintaks

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 ]

Argumen

Pisahkan parameter dan nilainya dengan spasi. Misalnya, sertakan spasi antara -S dan server_name.

-?

Mengembalikan diagram sintaks untuk sqlmaint. Gunakan parameter ini sendiri.

-S server_name[\instance_name]

Menentukan instans target SQL Server. Tentukan untuk menyambungkan <server_name> ke instans default SQL Server Database Engine di server tersebut. Tentukan untuk menyambungkan <server_name>\<instance_name> ke instans mesin database bernama di server tersebut. Jika Anda tidak menentukan server, sqlmaint tersambung ke instans default Mesin Database di komputer lokal.

-U login_ID

Menentukan akun yang akan digunakan saat menyambungkan ke server. Jika Anda tidak menyediakan parameter ini, sqlmaint mencoba menggunakan autentikasi Windows. Jika login_ID berisi karakter khusus, sertakan dalam tanda kutip ganda ("); jika tidak, tanda kutip ganda bersifat opsional.

Penting

Jika memungkinkan, gunakan autentikasi Windows.

Kata sandi -P

Menentukan kata sandi untuk login_ID. Parameter ini hanya valid jika Anda juga menyediakan -U parameter . Jika kata sandi berisi karakter khusus, sertakan dalam tanda kutip ganda; jika tidak, tanda kutip ganda bersifat opsional.

Penting

Kata sandi tidak disembunyikan. Jika memungkinkan, gunakan autentikasi Windows.

-D database_name

Menentukan nama database untuk melakukan operasi pemeliharaan. Jika database_name berisi karakter khusus, sertakan dalam tanda kutip ganda; jika tidak, tanda kutip ganda bersifat opsional.

-PlanName Nama

Menentukan nama rencana pemeliharaan database yang ditentukan menggunakan Wizard Rencana Pemeliharaan Database. Satu-satunya informasi yang hanya digunakan oleh sqlmaint dari rencana adalah daftar database dalam rencana. Setiap aktivitas pemeliharaan yang Anda tentukan di parameter sqlmaint lainnya diterapkan ke daftar database ini.

- PlanID guid

Menentukan pengidentifikasi unik global (GUID) dari rencana pemeliharaan database yang ditentukan menggunakan Wizard Rencana Pemeliharaan Database. Satu-satunya informasi yang digunakan sqlmaint adalah daftar database dalam rencana. Setiap aktivitas pemeliharaan yang Anda tentukan di parameter sqlmaint lainnya diterapkan ke daftar database ini. Nilai ini harus cocok dengan plan_id nilai dalam msdb.dbo.sysdbmaintplans.

-Rpt text_file

Menentukan jalur lengkap dan nama file untuk laporan yang dihasilkan. Laporan juga dihasilkan di layar. Laporan mempertahankan informasi versi dengan menambahkan tanggal ke nama file. Tanggal dihasilkan sebagai berikut, di akhir nama file tetapi sebelum periode, dalam formulir _<yyyyMMddhhmm>. <yyyy> = tahun, <MM> = bulan, <dd> = hari, <hh> = jam, <mm> = menit.

Jika Anda menjalankan utilitas pada 10:23 A.M. pada 1 Desember 1996, dan ini adalah nilai text_file :

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

Nama file yang dihasilkan adalah:

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

Nama file Universal Naming Convention (UNC) lengkap diperlukan untuk text_file ketika sqlmaint mengakses server jarak jauh.

-Untuk operator_name

Menentukan operator yang menerima laporan yang dihasilkan melalui SQL Mail.

-HtmlRpt html_file

Menentukan jalur lengkap dan nama file tempat laporan HTML dibuat. sqlmaint menghasilkan nama file dengan menambahkan string format _<yyyyMMddhhmm> ke nama file, seperti halnya untuk -Rpt parameter .

Nama file UNC lengkap diperlukan untuk html_file ketika sqlmaint mengakses server jarak jauh.

-DelHtmlRpt <time_period>

Menghapus laporan HTML apa pun di direktori laporan jika interval waktu setelah pembuatan file laporan melebihi time_period. -DelHtmlRpt mencari file yang namanya sesuai dengan pola yang dihasilkan dari parameter html_file . Jika html_file adalah C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, maka -DelHtmlRpt menyebabkan sqlmaint menghapus file apa pun yang namanya cocok dengan pola C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm dan yang lebih lama dari time_period yang ditentukan.

-RmUnusedSpace threshold_percent free_percent

Menentukan bahwa ruang yang tidak digunakan dihapus dari database yang ditentukan dalam -D. Opsi ini hanya berguna untuk database yang didefinisikan untuk tumbuh secara otomatis. Threshold_percent menentukan dalam megabyte ukuran yang harus dicapai database sebelum sqlmaint mencoba menghapus ruang data yang tidak digunakan. Jika database lebih kecil dari threshold_percent, tidak ada tindakan yang diambil. Free_percent menentukan berapa banyak ruang yang tidak digunakan harus tetap berada dalam database, yang ditentukan sebagai persentase dari ukuran akhir database.

Misalnya, jika database 200-MB berisi data 100 MB, menentukan 10 untuk free_percent menghasilkan ukuran database akhir adalah 110 MB. Database tidak diperluas jika lebih kecil dari free_percent ditambah jumlah data dalam database. Misalnya, jika database 108-MB memiliki data 100 MB, menentukan 10 untuk free_percent tidak memperluas database ke 110 MB; tetap pada 108 MB.

-CkDB | -CkDBNoIdx

Menentukan bahwa pernyataan DBCC CHECKDB, atau pernyataan DBCC CHECKDB dengan opsi NOINDEX, dijalankan pada database yang telah ditentukan di -D.

sqlmaint menulis peringatan untuk text_file jika database sedang digunakan saat dijalankan.

-CkAl | -CkAlNoIdx

Menentukan bahwa pernyataan DBCC CHECKALLOC dengan opsi NOINDEX dijalankan pada database yang ditentukan dalam -D.

-CkCat

Menentukan bahwa pernyataan DBCC CHECKCATALOG berjalan dalam database yang ditentukan dalam -D.

-UpdOptiStats sample_percent

Menentukan bahwa pernyataan berikut berjalan pada setiap tabel dalam database:

UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;

Jika tabel berisi kolom komputasi, Anda juga harus menentukan -SupportedComputedColumn argumen saat menggunakan -UpdOptiStats.

Untuk informasi selengkapnya, lihat MEMPERBARUI STATISTIK.

-RebldIdx free_space

Menentukan bahwa indeks pada tabel dalam database target harus dibangun kembali dengan menggunakan nilai persen free_space sebagai inversi faktor pengisian. Misalnya, jika persentase free_space adalah 30, maka faktor pengisian yang digunakan adalah 70. Jika nilai persentase free_space 100 ditentukan, indeks dibangun kembali dengan nilai faktor pengisian asli.

Jika indeks berada di kolom komputasi, Anda juga harus menentukan -SupportComputedColumn argumen saat Anda menggunakan -RebldIdx.

-DukungKolomTerhitung

Harus ditentukan untuk menjalankan DBCC perintah pemeliharaan dengan sqlmaint pada kolom komputasi.

-WriteHistory

Menetapkan bahwa entri dibuat dalam msdb.dbo.sysdbmaintplan_history untuk setiap tindakan pemeliharaan yang dilakukan oleh sqlmaint. Jika -PlanName atau -PlanID ditentukan, entri dalam sysdbmaintplan_history menggunakan ID paket yang ditentukan. Jika -D ditentukan, entri di sysdbmaintplan_history dibuat dengan nol untuk ID rencana.

-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]

Menentukan tindakan pencadangan. -BkUpDb mencadangkan seluruh database. -BkUpLog hanya mencadangkan log transaksi.

backup_path menentukan direktori untuk cadangan. backup_path tidak diperlukan jika -UseDefDir juga ditentukan, dan -UseDefDir mengambil alih backup_path jika keduanya ditentukan. Cadangan dapat ditempatkan di direktori atau alamat perangkat pita (misalnya, \\.\TAPE0). Nama file untuk cadangan database dihasilkan secara otomatis sebagai berikut:

dbname_db_yyyyMMddhhmm.BAK

Where:

  • <dbname> adalah nama database yang sedang dibackup.
  • <yyyyMMddhhmm> adalah waktu operasi pencadangan dengan <yyyy> = tahun, <MM> = bulan, <dd> = hari, <hh> = jam, dan <mm> = menit.

Nama file untuk cadangan transaksi dihasilkan secara otomatis dengan format serupa:

dbname_log_yyyymmddhhmm.BAK

Jika Anda menggunakan -BkUpDB parameter , Anda juga harus menentukan media dengan menggunakan -BkUpMedia parameter .

-BkUpMedia

Menentukan jenis media cadangan, baik DISK atau TAPE.

DISK

Menentukan bahwa media cadangan adalah disk.

-DelBkUps <time_period>

Untuk cadangan disk, menentukan bahwa file cadangan apa pun di direktori cadangan akan dihapus jika interval waktu setelah pembuatan cadangan melebihi time_period.

-CrBkSubDir

Untuk cadangan disk, menentukan bahwa subdirektori dibuat di direktori backup_path atau di direktori cadangan default jika -UseDefDir juga ditentukan. Nama subdirektori dihasilkan dari nama database yang ditentukan dalam -D. -CrBkSubDir menawarkan cara mudah untuk menempatkan semua cadangan untuk database yang berbeda ke dalam subdirektori terpisah tanpa harus mengubah parameter backup_path .

-UseDefDir

Untuk cadangan disk, menentukan bahwa file cadangan dibuat di direktori cadangan default. UseDefDir menggantikan backup_path jika keduanya ditentukan. Dengan penyiapan SQL Server default, direktori cadangan default adalah C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.

TAPE

Menentukan bahwa media cadangan adalah pita.

-BkUpOnlyIfClean

Menentukan bahwa pencadangan hanya terjadi jika pemeriksaan yang ditentukan -Ck tidak menemukan masalah dengan data. Tindakan pemeliharaan berjalan dalam urutan yang sama seperti yang muncul di prompt perintah. Tentukan parameter -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl, atau -CkCat sebelum parameter -BkUpDB atau -BkUpLog jika Anda juga akan menentukan -BkUpOnlyIfClean. Jika Anda tidak menentukan parameter ini, pencadangan terjadi baik pemeriksaan melaporkan masalah maupun tidak.

-VrfyBackup

Menyatakan bahwa RESTORE VERIFYONLY dijalankan pada cadangan setelah selesai.

angka [ menit| jam| hari| minggu| bulan ]

Menentukan interval waktu yang digunakan untuk menentukan apakah laporan atau file cadangan sudah cukup lama untuk dihapus. angka adalah bilangan bulat diikuti (tanpa spasi) dengan satuan waktu. Contoh yang sah:

  • 12weeks
  • 3months
  • 15days

Jika Anda hanya menentukan angka, bagian tanggal defaultnya adalah weeks.

Keterangan

Utilitas sqlmaint melakukan operasi pemeliharaan pada satu atau beberapa database. Jika Anda menentukan -D, utilitas melakukan operasi yang ditentukan dalam sakelar yang tersisa hanya pada database yang ditentukan. Jika Anda menentukan -PlanName atau -PlanID, satu-satunya informasi yang diambil sqlmaint dari rencana pemeliharaan yang ditentukan adalah daftar database dalam paket. Semua operasi yang ditentukan dalam parameter sqlmaint yang tersisa diterapkan terhadap setiap database dalam daftar yang diperoleh dari plan. Utilitas sqlmaint tidak menerapkan salah satu aktivitas pemeliharaan yang ditentukan dalam rencana itu sendiri.

Utilitas sqlmaint mengembalikan 0 jika berhasil berjalan atau 1 jika gagal. Kegagalan dilaporkan jika:

  • Salah satu tindakan pemeliharaan gagal.

  • , -CkDB, -CkDBNoIdx, -CkAl-CkAlNoIdx, -CkTxtAl, atau -CkCat memeriksa menemukan masalah dengan data.

  • Kegagalan umum ditemui.

Hak Akses

Setiap pengguna Windows dengan izin Baca dan Jalankan dapat sqlmaint.exe menjalankan utilitas sqlmaint . Secara default, sqlmaint.exe disimpan dalam <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn folder . Selain itu, login SQL Server yang -login_ID Anda tentukan harus memiliki izin SQL Server yang diperlukan untuk melakukan tindakan yang ditentukan. Jika Anda menggunakan autentikasi Windows untuk menyambungkan ke SQL Server, login SQL Server yang dipetakan ke pengguna Windows terautentikasi harus memiliki izin SQL Server yang diperlukan untuk melakukan tindakan yang ditentukan.

Misalnya, menggunakan -BkUpDB memerlukan izin untuk melaksanakan pernyataan BACKUP. Dan menggunakan -UpdOptiStats argumen memerlukan izin untuk menjalankan UPDATE STATISTICS pernyataan. Untuk informasi selengkapnya, lihat Izin (Mesin Database).

Contoh

Sebuah. Melakukan pemeriksaan DBCC pada database

Contoh ini menjalankan DBCC pengecekan terhadap database.

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

B. Perbarui statistik

Contoh ini memperbarui statistik menggunakan sampel 15% di semua database dalam rencana. Database apa pun yang mencapai 110 MB menyusut hanya memiliki ruang kosong 10%.

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

C. Mencadangkan semua basis data

Contoh ini membuat cadangan semua basis data ke subdirektori individu mereka, menggunakan direktori default <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup dalam sebuah rencana. Ini juga menghapus cadangan apa pun yang lebih lama dari dua minggu.

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

D. Mencadangkan sebuah database

Contoh ini mencadangkan satu database ke direktori default <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup.

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir