If-Koubou

Batch Script untuk Membuat Pemeliharaan Database SQL Server Sederhana

Batch Script untuk Membuat Pemeliharaan Database SQL Server Sederhana (Bagaimana caranya)

Selain membuat cadangan, ada berbagai tugas dan fungsi yang tersedia SQL Server yang dapat meningkatkan kinerja dan keandalan basis data Anda. Kami sebelumnya telah menunjukkan kepada Anda bagaimana mem-backup database SQL Server dengan skrip baris perintah sederhana sehingga dengan cara yang sama kami menyediakan skrip yang akan memungkinkan Anda untuk dengan mudah melakukan tugas pemeliharaan umum.

Memadatkan / Menyusut Basis Data [/ Compact]

Ada beberapa faktor yang berkontribusi pada ruang disk fisik yang digunakan oleh database SQL Server. Hanya untuk menyebutkan beberapa:

  • Seiring waktu sebagai catatan ditambahkan, dihapus dan diperbarui, SQL terus tumbuh dan menyusut tabel serta menghasilkan struktur data sementara untuk melakukan manipulasi query. Untuk mengakomodasi kebutuhan penyimpanan disk, SQL Server akan meningkatkan ukuran database (biasanya sebesar 10%) sesuai kebutuhan sehingga ukuran file database tidak terus berubah. Sementara ini sangat ideal untuk kinerja, itu dapat menyebabkan pemutusan dengan ruang penyimpanan yang digunakan karena jika, misalnya, Anda menambahkan sejumlah besar catatan yang menyebabkan database tumbuh dan kemudian menghapus catatan ini, SQL Server tidak akan secara otomatis merebut kembali ini ruang disk.
  • Jika Anda menggunakan Mode Pemulihan Penuh pada basis data Anda, file log transaksional (LDF) dapat berkembang cukup besar, terutama pada database dengan volume pembaruan tinggi.

Memadatkan (atau mengecilkan) basis data akan mengambil kembali ruang disk yang tidak digunakan. Untuk database kecil (200 MB atau kurang) ini biasanya tidak akan terlalu banyak, tetapi untuk database besar (1 GB atau lebih) ruang reklamasi mungkin signifikan.

Reindexing Database [/ Reindex]

Sama seperti terus-menerus membuat, mengedit dan menghapus file dapat menyebabkan fragmentasi disk, memasukkan, memperbarui dan menghapus rekaman dalam database dapat menyebabkan fragmentasi tabel. Hasil praktisnya sama dalam operasi baca dan tulis yang mengalami pukulan kinerja. Meskipun bukan analogi yang sempurna, mengindeks ulang tabel dalam database pada dasarnya mendefragasinya. Dalam beberapa kasus, ini dapat secara signifikan meningkatkan kecepatan pengambilan data.

Karena cara kerja SQL Server, tabel harus diindeks ulang secara individual. Untuk database dengan sejumlah besar tabel, ini dapat benar-benar menyakitkan untuk dilakukan secara manual, tetapi skrip kami mengenai setiap tabel di masing-masing basis data dan membangun kembali semua indeks.

Verifikasi Integritas [/ Verifikasi]

Agar database tetap berfungsi dan menghasilkan hasil yang akurat, ada banyak item integritas yang harus ada. Untungnya, masalah integritas fisik dan / atau logis tidak terlalu umum, tetapi merupakan praktik yang baik untuk sesekali menjalankan proses verifikasi integritas pada basis data Anda dan meninjau hasilnya.

Ketika proses verifikasi dijalankan melalui skrip kami, hanya kesalahan yang dilaporkan, jadi tidak ada berita adalah berita baik.

Menggunakan Script

Script batch SQLMaint kompatibel dengan SQL 2005 dan lebih tinggi dan harus dijalankan pada mesin yang memiliki alat SQLCMD diinstal (diinstal sebagai bagian dari instalasi SQL Server). Disarankan Anda menjatuhkan skrip ini ke lokasi yang ditetapkan dalam variabel PATH Windows Anda (yaitu C: Windows) sehingga dengan mudah dapat dipanggil seperti aplikasi lain apa pun dari baris perintah.

Untuk melihat informasi bantuan, cukup masukkan:

SQLMaint /?

Contoh

Untuk menjalankan kompak dan kemudian memverifikasi pada database "MyDB" menggunakan koneksi tepercaya:

SQLMaint MyDB / Kompak / Verifikasi

Untuk menjalankan reindex dan kemudian memadatkan pada "MyDB" pada contoh bernama "Khusus" menggunakan "sa" pengguna dengan kata sandi "123456":

SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact

Menggunakan dari Inside of a Batch Script

Sementara skrip batch SQLMaint dapat digunakan seperti aplikasi dari baris perintah, ketika Anda menggunakannya di dalam skrip batch lain, itu harus didahului dengan kata kunci CALL.

Sebagai contoh, skrip ini menjalankan semua tugas pemeliharaan pada setiap database non-sistem pada instalasi SQL Server default menggunakan otentikasi tepercaya:

@ECHO OFF
SETLOCAL EnableExtensions
SET DBList = "% TEMP% DBList.txt"
SqlCmd -E -h-1 -w 300 -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE Name Not IN ('master', 'model', 'msdb', 'tempdb') ”>% DBList%
FOR / F "usebackq token = 1" %% i IN (% DBList%) DO (
HUBUNGI SQLMaint "%% i" / Kompak / Reindex / Verifikasi
ECHO +++++++++++
)
JIKA ADA% DBList% DEL / F / Q% DBList%
ENDLOCAL

Unduh SQLMaint Batch Script dari SysadminGeek.com