Bagikan melalui


Utilitas sqlmaint

Berlaku untuk: SQL Server

Utilitassqlmaint melakukan serangkaian operasi pemeliharaan tertentu pada satu atau beberapa database. Gunakan sqlmaint untuk menjalankan pemeriksaan DBCC, mencadangkan database dan log transaksinya, memperbarui statistik, dan membangun kembali indeks. Semua aktivitas pemeliharaan database menghasilkan laporan yang dapat dikirim ke file teks yang ditunjuk, file HTML, atau akun email. sqlmaint menjalankan rencana pemeliharaan database yang dibuat dengan 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

Parameter dan nilainya harus dipisahkan oleh spasi. Misalnya, harus ada spasi antara -S dan server_name.

-?
Menentukan bahwa diagram sintaks untuk sqlmaint dikembalikan. Parameter ini harus digunakan sendiri.

-S server_name[ \instance_name]
Menentukan instans target Microsoft SQL Server. Tentukan server_name untuk menyambungkan ke instans default SQL Server Database Engine di server tersebut. Tentukan instance_name server_name\ untuk menyambungkan ke instans mesin database bernama di server tersebut. Jika tidak ada server yang ditentukan, sqlmaint tersambung ke instans default Mesin Database di komputer lokal.

-U login_ID
Menentukan ID masuk yang akan digunakan saat menyambungkan ke server. Jika tidak disediakan, sqlmaint mencoba menggunakan Autentikasi Microsoft Windows. Jika login_ID berisi karakter khusus, karakter tersebut harus diapit dalam tanda kutip ganda ("); jika tidak, tanda kutip ganda bersifat opsional.

Penting

Jika memungkinkan, gunakan Autentikasi Windows.

Kata sandi -P
Menentukan kata sandi untuk ID masuk. Hanya valid jika parameter -U juga disediakan. Jika kata sandi berisi karakter khusus, kata sandi harus diapit dalam tanda kutip ganda; jika tidak, tanda kutip ganda bersifat opsional.

Penting

Kata sandi tidak diselubungi. Jika memungkinkan, gunakan Autentikasi Windows.

-D database_name
Menentukan nama database untuk melakukan operasi pemeliharaan. Jika database_name berisi karakter khusus, karakter tersebut harus diapit dalam tanda kutip ganda; jika tidak, tanda kutip ganda bersifat opsional.

-NamaNama PlanName
Menentukan nama rencana pemeliharaan database yang ditentukan menggunakan Wizard Rencana Pemeliharaan Database. Satu-satunya informasi yang digunakan sqlmaint dari paket adalah daftar database dalam paket. 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 dari paket adalah daftar database dalam paket. Setiap aktivitas pemeliharaan yang Anda tentukan di parameter sqlmaint lainnya diterapkan ke daftar database ini. Ini harus cocok dengan nilai plan_id dalam msdb.dbo.sysdbmaintplans.

-Rpt text_file
Menentukan jalur lengkap dan nama file tempat laporan akan dibuat. 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 tempat laporan yang dihasilkan dikirim melalui SQL Mail.

-HtmlRpt html_file
Menentukan jalur lengkap dan nama file tempat laporan HTML akan dibuat. sqlmaint menghasilkan nama file dengan menambahkan string format _yyyyMMddhhmm ke nama file, seperti halnya untuk parameter -Rpt .

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

-DelHtmlRpt<time_period>
Menentukan bahwa setiap laporan HTML dalam direktori laporan akan dihapus 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. Perhatikan bahwa 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 menjadi 110 MB; database tetap pada 108 MB.

-CkDB-CkDBNoIdx |
Menentukan bahwa pernyataan DBCC CHECKDB atau pernyataan DBCC CHECKDB dengan opsi NOINDEX dijalankan dalam database yang ditentukan dalam -D. Untuk informasi selengkapnya, lihat DBCC CHECKDB.

Peringatan ditulis ke text_file jika database sedang digunakan saat sqlmaint berjalan.

-CkAl-CkAlNoIdx |
Menentukan bahwa pernyataan DBCC CHECKALLOC dengan opsi NOINDEX dijalankan dalam database yang ditentukan dalam -D. Untuk informasi selengkapnya, lihat DBCC CHECKALLOC (Transact-SQL).

-CkCat
Menentukan bahwa pernyataan DBCC CHECKCATALOG (Transact-SQL) dijalankan dalam database yang ditentukan dalam -D. Untuk informasi selengkapnya, lihat DBCC CHECKCATALOG (Transact-SQL).

-UpdOptiStats sample_percent
Menentukan bahwa pernyataan berikut dijalankan pada setiap tabel dalam database:

UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;  

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

Untuk informasi selengkapnya, lihat MEMPERBARUI STATISTIK (Transact-SQL).

-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, maka indeks dibangun kembali dengan nilai faktor pengisian asli.

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

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

-WriteHistory
Menentukan 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 dalam sysdbmaintplan_history dibuat dengan nol untuk ID paket.

-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 ditimpa oleh -UseDefDir 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  
  

lokasi

  • dbname adalah nama database yang sedang dicadangkan.

  • 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 parameter -BkUpDB , Anda juga harus menentukan media dengan menggunakan parameter -BkUpMedia .

-BkUpMedia
Menentukan jenis media cadangan, baik DISK atau TAPE.

DISKA
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 mengambil alih backup_path jika keduanya ditentukan. Dengan penyiapan Microsoft 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 ada pemeriksaan -Ck yang ditentukan 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-BkUpLog/ jika Anda juga akan menentukan -BkUpOnlyIfClean, atau pencadangan terjadi apakah pemeriksaan melaporkan masalah atau tidak.

-VrfyBackup
Menentukan bahwa RESTORE VERIFYONLY dijalankan pada cadangan ketika selesai.

number[minutes hours| | day| weeks| months]
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

  • 15 hari

Jika hanya angka yang ditentukan, bagian tanggal default adalah minggu.

Keterangan

Utilitas sqlmaint melakukan operasi pemeliharaan pada satu atau beberapa database. Jika -D ditentukan, operasi yang ditentukan dalam sakelar yang tersisa hanya dilakukan pada database yang ditentukan. Jika -PlanName atau -PlanID ditentukan, 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 rencana. 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.

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

  • Jika terjadi kegagalan umum.

Izin

Utilitas sqlmaint dapat dijalankan oleh pengguna Windows mana pun dengan izin Baca dan Jalankan pada sqlmaint.exe, yang secara default disimpan dalam x:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn folder. Selain itu, login SQL Server yang ditentukan dengan -login_ID harus memiliki izin SQL Server yang diperlukan untuk melakukan tindakan yang ditentukan. Jika koneksi ke SQL Server menggunakan Autentikasi Windows, login SQL Server yang dipetakan ke pengguna Windows yang diautentikasi harus memiliki izin SQL Server yang diperlukan untuk melakukan tindakan yang ditentukan.

Misalnya, menggunakan -BkUpDB memerlukan izin untuk menjalankan pernyataan BACKUP. Dan menggunakan argumen -UpdOptiStats memerlukan izin untuk menjalankan pernyataan UPDATE STATISTICS. Untuk informasi selengkapnya, lihat bagian "Izin" dari topik terkait di Buku Online.

Contoh

J. Melakukan pemeriksaan DBCC pada database

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

B. Memperbarui statistik menggunakan sampel 15% di semua database dalam paket. Selain itu, susutkan salah satu database yang telah mencapai 110 MB untuk hanya memiliki ruang kosong 10%

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

C. Mencadangkan semua database dalam rencana ke subdirektori individual mereka dalam x:\Program Files\Microsoft SQL Server\MSSQL13 default. Direktori MSSQLSERVER\MSSQL\Backup. Selain itu, hapus cadangan apa pun yang lebih lama dari 2 minggu

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

D. Mencadangkan database ke x:\Program Files\Microsoft SQL Server\MSSQL13 default. Direktori MSSQLSERVER\MSSQL\Backup.\

sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir  

Lihat Juga

BACKUP (Transact-SQL)
PERBARUI STATISTIK (Transact-SQL)