Selama setahun terakhir, saya telah mempresentasikan banyak sesi di Azure SQL Database serta menulis banyak artikel dan blog. Saya sering ditanya apakah pemeliharaan database masih merupakan faktor penting saat menggunakan Azure SQL Database. Ya – tugas-tugas seperti pemeliharaan indeks, pembaruan statistik, dan pemeriksaan konsistensi masih penting, dan terserah kepada DBA untuk menjadwalkan tugas-tugas ini. Kebingungan berasal dari Azure SQL Database sebagai Platform sebagai Layanan dan Microsoft bertanggung jawab atas infrastruktur serta menangani pencadangan. Sementara beberapa aspek korupsi fisik mungkin diperhitungkan, korupsi logis dalam database tidak. Untuk alasan itu, saya tetap menyarankan klien menjalankan DBCC CHECKDB
untuk memastikan mereka terlindungi sepenuhnya.
Masalah yang muncul dengan DBA baru yang bekerja dengan Azure SQL Database adalah bahwa tidak ada SQL Server Agent bawaan seperti yang biasa kami lakukan dengan SQL Server Standard dan Enterprise Editions.
Untuk menjadwalkan pekerjaan pemeliharaan terhadap Azure SQL Database, Anda memiliki sejumlah opsi:
- Server tertaut
- Rencana Pemeliharaan Basis Data
- Powershell
- Layanan Azure
- Pekerjaan Elastis
Demo berikut mengasumsikan Anda telah mengonfigurasi akun login, aturan firewall, dan pengaturan keamanan lainnya untuk mengakses Database Azure SQL Anda dari jarak jauh.
Server Tertaut
Menghubungkan ke Database Azure SQL menggunakan server tertaut adalah pendekatan yang sangat umum karena sebagian besar DBA sudah terbiasa membuat dan mengelola server tertaut. Dua cara paling umum yang saya lihat klien menggunakan server tertaut adalah dengan SQL Server Native Client atau Penyedia Microsoft OLE DB untuk Driver ODBC sebagai penyedia. Jika Anda menggunakan klien asli, Anda harus memberikan nama server sebagai sumber data; namun jika menggunakan driver ODBC, maka Anda harus mendapatkan string koneksi dan menggunakannya sebagai string penyedia. Kedua nilai ini dapat ditemukan di Portal Azure untuk database Anda. Setelah Anda mengklik database Anda, Anda akan melihat nama server dan opsi untuk menunjukkan string koneksi database. Nama server ini, sqlperformance.database.windows.net adalah yang akan saya gunakan untuk sumber data SQL Server Native Client.
Ketika Anda mengklik "Tampilkan string koneksi database", Anda saat ini memiliki opsi untuk ADO.NET, JDBC, ODBC, dan PHP. Untuk melihat string koneksi untuk ODBC, klik tab ODBC.
Selanjutnya Anda harus membuat server tertaut di SSMS. Di bawah “Objek Server”, klik kanan pada “Server Tertaut”, pilih “Server Tertaut Baru”, dan ketik informasi yang diperlukan tergantung pada pilihan penyedia sumber data Anda.
Selanjutnya klik "Keamanan" dan tentukan preferensi Anda. Biasanya saya melihat opsi "Dibuat menggunakan konteks keamanan ini" dengan login jarak jauh dan kata sandi yang disediakan.
Setelah Anda menentukan semua ini, klik OK. Sekarang Anda dapat mengeklik kanan pada server tertaut baru Anda dan menguji koneksi.
Anda sekarang dapat mereferensikan server tertaut untuk memanggil prosedur tersimpan apa pun, seperti Pengoptimalan Indeks Ola Hallengren dan DatabaseIntegrityCheck langsung terhadap Database Azure SQL dalam langkah tugas Agen SQL.
Rencana Pemeliharaan Basis Data
Jika Anda berencana menggunakan rencana pemeliharaan basis data untuk pemeliharaan Anda, prosesnya sedikit lebih mudah. Untuk memulai, cukup buat rencana pemeliharaan Anda secara manual atau menggunakan wizard. Jika Anda menggunakan panduan, setelah Anda membuat rencana pemeliharaan, Anda bisa mengedit rencana, dan kemudian menambahkan koneksi Azure. Anda kemudian mengubah setiap tugas untuk menggunakan koneksi baru. Layar koneksi Anda akan terlihat seperti berikut:
Sekarang Anda dapat menjadwalkan rencana pemeliharaan basis data untuk dijalankan selama periode pemeliharaan.
PowerShell
PowerShell adalah pilihan yang sangat baik untuk bekerja dengan tugas yang dapat diulang dan menggunakan PowerShell dengan Azure SQL Database sangat mudah. Anda dapat menggunakan fungsi Invoke-SqlCmd untuk membuat kueri atau mengeksekusi pernyataan terhadap database Anda.
Pendekatan yang umum adalah menggunakan skrip yang mirip dengan:
$params = @{ 'Database' = 'YourDatabase' 'ServerInstance' = 'instance.database.windows.net' 'Username' = 'UserName' 'Password' = 'ComplexP@$$word' 'Query' = 'Your Query Here' } Invoke-Sqlcmd @params
Untuk kueri Anda, Anda dapat menggunakan pengoptimalan indeks dan pemeriksaan konsistensi Ola Hallengren, atau skrip khusus apa pun yang telah Anda gunakan. Anda kemudian harus menjadwalkan skrip PowerShell Anda menggunakan penjadwal apa pun yang Anda gunakan untuk organisasi Anda.
Layanan Azure
Dibangun ke dalam platform Azure adalah Azure Automation dan untuk memulai, Anda harus membuat akun otomatisasi. Anda harus memberikan nama untuk akun tersebut, memilih langganan, grup sumber daya, lokasi, dan menentukan apakah Anda ingin membuat akun Azure Run As.
Setelah Anda membuat akun, Anda dapat mulai membuat runbook. Anda dapat melakukan apa saja dengan runbook. Ada banyak run book yang dapat Anda telusuri dan modifikasi untuk penggunaan Anda sendiri, termasuk penyediaan, pemantauan, manajemen siklus hidup, dan banyak lagi.
Anda dapat membuat runbook secara offline, atau menggunakan Azure Portal, dan runbook dibuat menggunakan PowerShell. Dalam contoh ini, kami akan menggunakan kembali kode dari demo PowerShell dan juga menunjukkan bagaimana kami dapat menggunakan penjadwal Layanan Azure bawaan untuk menjalankan kode PowerShell yang ada dan tidak harus bergantung pada penjadwal lokal, penjadwal tugas, atau Azure VM untuk menjadwalkan pekerjaan.
Mulailah dengan mengklik Runbooks
Selanjutnya klik “Tambahkan runbook”
Klik “Buat buku pedoman baru”
Berikan nama dan jenis runbook, saya memilih PowerShell untuk demo saya.
Anda kemudian berada di layar edit untuk runbook baru Anda. Di sinilah Anda dapat mengonfigurasi detail dan membuat runbook Anda. Untuk demo ini, saya hanya menjalankan skrip PowerShell untuk memanggil prosedur tersimpan terhadap database. Setelah Anda menyelesaikan semua kode, Anda dapat menerbitkan dan menyimpan runbook Anda.
Dari sini, Anda dapat memulai runbook dan memvalidasi semuanya berfungsi sebagaimana mestinya, serta menjadwalkan runbook untuk dijalankan pada waktu tertentu. Mari ikuti proses ini dengan mengklik “Jadwal”
Kami harus mengeklik “Tautkan jadwal ke runbook Anda” dan karena kami belum pernah membuat jadwal apa pun sebelumnya, kami harus menentukan jadwal baru dengan mengeklik “Buat jadwal baru”.
Sama seperti yang kami lakukan di SQL Server Agent, berikan nama jadwal, deskripsi jika Anda ingin, kapan harus memulai, dan seberapa sering harus dijalankan. Saya mengatur ini terjadi setiap hari pada jam 2 pagi.
Sekarang saya memiliki runbook yang diterbitkan, dijadwalkan untuk dijalankan setiap malam pada pukul 2 pagi untuk melakukan pemeliharaan indeks pada salah satu database saya.
Pekerjaan Elastis
Pekerjaan Elastis saat ini masih dalam pratinjau, jadi saya tidak akan menjelaskan secara rinci karena kemungkinan besar layar dan fungsi akan berubah.
Menggunakan Pekerjaan Elastis mengharuskan Anda menentukan kumpulan basis data elastis dan menetapkan setidaknya satu basis data ke kumpulan untuk menjalankan tugas. Setelah Anda membuat kumpulan elastis dan menambahkan database, Anda dapat mengklik buat pekerjaan.
Berikan pekerjaan Anda nama deskriptif dan berikan nama pengguna dan kata sandi untuk terhubung ke database, serta skrip yang ingin Anda jalankan. Klik simpan dan Anda sekarang memiliki pekerjaan yang elastis.
Anda kemudian dapat memilih untuk menjalankan tugas, melihat skrip, atau membatalkan tugas jika sedang berjalan.
Meskipun ada hal-hal tertentu yang dapat Anda lakukan melalui Portal Azure dengan pekerjaan elastis, opsi daya dan konfigurasi sebenarnya tersedia melalui PowerShell API. Untuk menjadwalkan pekerjaan, Anda harus menggunakan cmdlet New-AzureSQLJobSchedule. Detail lebih lanjut tentang fitur tambahan dan cara menjadwalkan pekerjaan dapat ditemukan di sini:
- Membuat dan mengelola tugas elastis Database SQL menggunakan PowerShell
Secara keseluruhan, saya menyukai fitur pekerjaan elastis dan berharap ketika fitur ini tersedia secara umum, lebih banyak fungsionalitas akan dibangun ke dalam Portal Azure tanpa harus mengelolanya dengan PowerShell. Saya suka Anda dapat menjalankan T-SQL secara langsung, tanpa harus menjalankannya di dalam PowerShell dan bagaimana T-SQL dapat dijalankan terhadap semua database di kumpulan.
Ringkasan
Ketika datang ke Azure SQL Databases, ya, Anda masih bertanggung jawab untuk pemeliharaan tertentu pada database Anda. Anda memiliki banyak metode penjadwalan pekerjaan, dan tergantung pada kebutuhan dan ukuran lingkungan Anda, opsi tertentu membuat solusi yang lebih baik. Server tertaut dan rencana pemeliharaan database adalah metode yang cepat dan mudah jika Anda memiliki VM Azure lokal atau dengan SQL server yang sudah dikonfigurasi, dan penerapan Azure kecil. PowerShell selalu merupakan pilihan yang baik, Anda hanya perlu menemukan solusi untuk menjadwalkan skrip untuk dijalankan. Otomatisasi Azure adalah solusi yang sangat kuat yang memungkinkan Anda membuat runbook untuk menyelesaikan apa saja dan dengan mudah menjadwalkan runbook dan pekerjaan elastis adalah solusi berbasis Azure hebat lainnya jika Anda memiliki tugas yang perlu dijalankan terhadap sekelompok database dalam kumpulan elastis.