SQL Server Agent
Berlaku untuk: SQL Server Azure SQL Managed Instance
Artikel ini memberikan gambaran umum tentang SQL Server Agent, yang merupakan layanan Microsoft Windows yang menjalankan tugas administratif terjadwal (disebut pekerjaan) di SQL Server dan Azure SQL Managed Instance.
Penting
Pada Azure SQL Managed Instance, sebagian besar, tetapi tidak semua fitur SQL Server Agent saat ini didukung. Lihat Perbedaan T-SQL Azure SQL Managed Instance dari SQL Server untuk detailnya.
Manfaat SQL Server Agent
SQL Server Agent menggunakan SQL Server untuk menyimpan informasi pekerjaan. Pekerjaan berisi satu atau beberapa langkah pekerjaan. Setiap langkah berisi tugasnya sendiri, misalnya, mencadangkan database.
SQL Server Agent dapat menjalankan pekerjaan sesuai jadwal, sebagai respons terhadap peristiwa tertentu, atau sesuai permintaan. Misalnya, jika Anda ingin mencadangkan semua server perusahaan setiap hari kerja setelah jam kerja, Anda dapat mengotomatiskan tugas ini. Jadwalkan pencadangan untuk dijalankan setelah pukul 22:00 Senin hingga Jumat. Jika cadangan mengalami masalah, SQL Server Agent dapat merekam peristiwa dan memberi tahu Anda.
Catatan
Secara default, layanan SQL Server Agent dinonaktifkan ketika SQL Server diinstal kecuali pengguna secara eksplisit memilih untuk memulai layanan secara otomatis.
Komponen Agen SQL Server
SQL Server Agent menggunakan komponen berikut untuk menentukan tugas yang akan dilakukan, kapan harus melakukan tugas, dan cara melaporkan keberhasilan atau kegagalan tugas.
Gunakan Pengelola Konfigurasi SQL Server untuk mengelola layanan SQL Server Agent, dan gunakan SQL Server Management Studio (SSMS) untuk mengelola properti, pekerjaan, pemberitahuan, operator, dan proksi SQL Server Agent dengan mudah di antarmuka pengguna grafis.
Pekerjaan
Pekerjaan adalah serangkaian tindakan tertentu yang dilakukan SQL Server Agent. Gunakan pekerjaan untuk menentukan tugas administratif yang dapat dijalankan satu atau beberapa kali dan dipantau keberhasilan atau kegagalannya. Pekerjaan dapat berjalan di satu server lokal atau di beberapa server jarak jauh.
Penting
Pekerjaan SQL Server Agent yang berjalan pada saat peristiwa failover pada instans kluster failover SQL Server tidak dilanjutkan setelah failover ke node kluster failover lainnya. Pekerjaan SQL Server Agent yang berjalan pada saat node Hyper-V dijeda tidak dilanjutkan jika jeda menyebabkan failover ke node lain. Pekerjaan yang dimulai tetapi gagal diselesaikan karena peristiwa failover dicatat sebagai dimulai, tetapi tidak menampilkan entri log tambahan untuk penyelesaian atau kegagalan. Pekerjaan SQL Server Agent dalam skenario ini tampaknya belum pernah berakhir.
Anda dapat menjalankan pekerjaan dengan beberapa cara:
Menurut satu atau beberapa jadwal.
Menanggapi satu atau beberapa pemberitahuan.
Dengan menjalankan prosedur tersimpan
sp_start_job
.
Setiap tindakan dalam pekerjaan adalah langkah pekerjaan. Misalnya, langkah pekerjaan mungkin terdiri dari menjalankan pernyataan Transact-SQL, menjalankan paket SSIS, atau mengeluarkan perintah ke server Analysis Services. Langkah-langkah pekerjaan dikelola sebagai bagian dari pekerjaan.
Setiap langkah pekerjaan berjalan dalam konteks keamanan tertentu. Untuk langkah-langkah pekerjaan yang menggunakan Transact-SQL, gunakan pernyataan EXECUTE AS untuk mengatur konteks keamanan untuk langkah pekerjaan. Untuk jenis langkah pekerjaan lainnya, gunakan akun proksi untuk mengatur konteks keamanan untuk langkah pekerjaan.
Gunakan prosedur tersimpan sistem sp_help_job untuk mengetahui informasi tentang pekerjaan tertentu. Gunakan tabel sistem dbo.sysjobs untuk melihat informasi tentang pekerjaan. Misalnya, gunakan pernyataan Transact-SQL (T-SQL) berikut untuk melihat informasi tentang semua pekerjaan di server:
USE MSDB
GO
SELECT job_id, [name] FROM dbo.sysjobs;
Jadwal
Jadwal menentukan kapan pekerjaan berjalan. Lebih dari satu pekerjaan dapat berjalan pada jadwal yang sama, dan lebih dari satu jadwal dapat berlaku untuk pekerjaan yang sama. Jadwal dapat menentukan kondisi berikut saat tugas berjalan:
Setiap kali SQL Server Agent dimulai.
Setiap kali pemanfaatan CPU komputer berada pada tingkat yang telah Anda tentukan sebagai menganggur.
Satu kali, pada tanggal dan waktu tertentu.
Pada jadwal berulang.
Untuk informasi selengkapnya, lihat Membuat dan melampirkan jadwal ke pekerjaan.
Peringatan
Pemberitahuan adalah respons otomatis terhadap peristiwa tertentu. Misalnya, peristiwa dapat menjadi pekerjaan yang dimulai atau sumber daya sistem yang mencapai ambang batas tertentu. Anda menentukan kondisi di mana pemberitahuan terjadi.
Pemberitahuan dapat merespons salah satu kondisi berikut:
Peristiwa SQL Server
Kondisi performa SQL Server
Peristiwa Microsoft Windows Management Instrumentation (WMI) di komputer tempat Agen SQL Server berjalan
Pemberitahuan dapat melakukan tindakan berikut:
Memberi tahu satu atau beberapa operator
Menjalankan pekerjaan
Untuk informasi selengkapnya, lihat Pemberitahuan.
Operator
Operator menentukan informasi kontak untuk individu yang bertanggung jawab atas pemeliharaan satu atau beberapa instans SQL Server. Di beberapa perusahaan, tanggung jawab operator ditetapkan untuk satu individu. Di perusahaan dengan beberapa server, banyak individu dapat berbagi tanggung jawab operator. Operator tidak berisi informasi keamanan, dan tidak menentukan prinsip keamanan.
SQL Server dapat memberi tahu operator pemberitahuan melalui...
Email
Pager (melalui email)
kirim bersih
Catatan
Untuk mengirim pemberitahuan dengan menggunakan net send, layanan Windows Messenger harus dimulai di komputer tempat SQL Server Agent berada.
Penting
Opsi Pager dan net send dihapus dari SQL Server Agent di versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur-fitur ini.
Untuk mengirim pemberitahuan ke operator dengan menggunakan email atau pager, Anda harus mengonfigurasi SQL Server Agent untuk menggunakan Email Database. Untuk informasi selengkapnya, lihat Email Database.
Anda dapat menentukan operator sebagai alias untuk sekelompok individu. Dengan cara ini, semua anggota alias tersebut tidak diverifikasi secara bersamaan. Untuk informasi selengkapnya, lihat Operator.
Keamanan untuk administrasi SQL Server Agent
SQL Server Agent menggunakan peran database tetap SQLAgentUserRole, SQLAgentReaderRole, dan SQLAgentOperatorRole dalam msdb
database untuk mengontrol akses ke SQL Server Agent bagi pengguna yang bukan anggota peran server tetap sysadmin . Selain peran database tetap ini, subsistem dan proksi membantu administrator database memastikan bahwa setiap langkah pekerjaan berjalan dengan izin minimum yang diperlukan untuk melakukan tugasnya.
Peran
Anggota peran database tetap SQLAgentUserRole, SQLAgentReaderRole, dan SQLAgentOperatorRole dalam msdb
, dan anggota peran server tetap sysadmin memiliki akses ke SQL Server Agent. Pengguna yang bukan milik salah satu peran ini tidak dapat menggunakan SQL Server Agent. Untuk informasi selengkapnya tentang peran yang digunakan oleh SQL Server Agent, lihat Menerapkan SQL Server Agent Security.
Subsystems
Subsistem adalah objek yang telah ditentukan sebelumnya yang mewakili fungsionalitas yang tersedia untuk langkah pekerjaan. Setiap proksi memiliki akses ke satu atau beberapa subsistem. Subsistem memberikan keamanan karena memisahkan akses ke fungsionalitas yang tersedia untuk proksi. Setiap langkah pekerjaan berjalan dalam konteks proksi, kecuali untuk langkah-langkah pekerjaan Transact-SQL. Langkah-langkah pekerjaan Transact-SQL menggunakan perintah EXECUTE AS untuk mengatur konteks keamanan ke pemilik Pekerjaan.
SQL Server menentukan subsistem yang tercantum dalam tabel berikut:
Nama subsistem | Deskripsi |
---|---|
Skrip Microsoft ActiveX | Jalankan langkah pekerjaan pembuatan skrip ActiveX. Peringatan Subsistem Scripting ActiveX dihapus dari SQL Server Agent dalam versi Microsoft SQL Server di masa mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. |
Sistem Operasi (CmdExec) | Jalankan program yang dapat dieksekusi. |
PowerShell | Jalankan langkah pekerjaan pembuatan skrip PowerShell. |
Distributor Replikasi | Jalankan langkah pekerjaan yang mengaktifkan Agen Distribusi replikasi. |
Penggabungan Replikasi | Jalankan langkah pekerjaan yang mengaktifkan Agen Penggabungan replikasi. |
Pembaca Antrean Replikasi | Jalankan langkah pekerjaan yang mengaktifkan Agen Pembaca Antrean replikasi. |
Rekam Jepret Replikasi | Jalankan langkah pekerjaan yang mengaktifkan Agen Rekam Jepret replikasi. |
Pembaca Log Transaksi Replikasi | Jalankan langkah pekerjaan yang mengaktifkan Agen Pembaca Log replikasi. |
Perintah Analysis Services | Jalankan perintah Analysis Services. |
Kueri Analysis Services | Jalankan kueri Analysis Services. |
Eksekusi paket SSIS | Jalankan paket SSIS. |
Catatan
Karena langkah-langkah pekerjaan Transact-SQL tidak menggunakan proksi, tidak ada subsistem SQL Server Agent untuk langkah-langkah pekerjaan Transact-SQL.
SQL Server Agent memberlakukan pembatasan subsistem bahkan ketika perwakilan keamanan untuk proksi biasanya akan memiliki izin untuk menjalankan tugas dalam langkah pekerjaan. Misalnya, proksi untuk pengguna yang merupakan anggota peran server tetap sysadmin tidak dapat menjalankan langkah pekerjaan SSIS kecuali proksi memiliki akses ke subsistem SSIS, meskipun pengguna dapat menjalankan paket SSIS.
Proksi
SQL Server Agent menggunakan proksi untuk mengelola konteks keamanan. Proksi dapat digunakan dalam lebih dari satu langkah pekerjaan. Anggota peran server tetap sysadmin dapat membuat proksi.
Setiap proksi sesuai dengan kredensial keamanan. Setiap proksi dapat dikaitkan dengan sekumpulan subsistem dan serangkaian login. Proksi hanya dapat digunakan untuk langkah-langkah pekerjaan yang menggunakan subsistem yang terkait dengan proksi. Untuk membuat langkah pekerjaan yang menggunakan proksi tertentu, pemilik pekerjaan harus menggunakan login yang terkait dengan proksi tersebut atau anggota peran dengan akses tak terbatas ke proksi. Anggota peran server tetap sysadmin memiliki akses tak terbatas ke proksi. Anggota SQLAgentUserRole, SQLAgentReaderRole, atau SQLAgentOperatorRole hanya dapat menggunakan proksi tempat mereka diberikan akses tertentu. Setiap pengguna yang merupakan anggota dari salah satu peran database tetap Agen SQL Server ini harus diberikan akses ke proksi tertentu sehingga pengguna dapat membuat langkah-langkah pekerjaan yang menggunakan proksi tersebut.
Mengotomatiskan administrasi
Gunakan langkah-langkah berikut untuk mengonfigurasi SQL Server Agent untuk mengotomatiskan administrasi SQL Server:
Menetapkan tugas administratif atau peristiwa server mana yang terjadi secara teratur dan apakah tugas atau peristiwa ini dapat dikelola secara terprogram. Tugas adalah kandidat yang baik untuk otomatisasi jika melibatkan urutan langkah yang dapat diprediksi dan terjadi pada waktu tertentu atau sebagai respons terhadap peristiwa tertentu.
Tentukan serangkaian pekerjaan, jadwal, pemberitahuan, dan operator dengan menggunakan SQL Server Management Studio, skrip Transact-SQL, atau SQL Server Management Objects (SMO). Untuk informasi selengkapnya, lihat Membuat Pekerjaan.
Jalankan pekerjaan SQL Server Agent yang telah Anda tentukan.
Catatan
Untuk instans default SQL Server, layanan SQL Server diberi nama SQLSERVERAGENT. Untuk instans bernama, layanan SQL Server Agent diberi nama SQLAgent$instancename.
Jika Menjalankan beberapa instans SQL Server, Anda dapat menggunakan administrasi multiserver untuk mengotomatiskan tugas yang umum di semua instans. Untuk informasi selengkapnya, lihat Administrasi Otomatis Di Seluruh Perusahaan.
Gunakan tugas berikut untuk mulai menggunakan SQL Server Agent:
Deskripsi | Artikel |
---|---|
Menjelaskan cara mengonfigurasi SQL Server Agent. | Mengonfigurasi SQL Server Agent |
Menjelaskan cara memulai, menghentikan, dan menjeda layanan SQL Server Agent. | Mulai, Hentikan, atau Jeda Layanan Agen SQL Server |
Menjelaskan pertimbangan untuk menentukan akun untuk layanan SQL Server Agent. | Pilih Akun untuk Layanan SQL Server Agent |
Menjelaskan cara menggunakan log kesalahan SQL Server Agent. | Log Kesalahan Agen SQL Server |
Menjelaskan cara menggunakan objek performa. | Menggunakan Objek Performa |
Menjelaskan Wizard Rencana Pemeliharaan, yang merupakan utilitas yang Anda gunakan untuk membuat pekerjaan, pemberitahuan, dan operator untuk mengotomatiskan administrasi instans SQL Server. | Menggunakan Wizard Rencana Pemeliharaan |
Menjelaskan cara mengotomatiskan tugas administratif menggunakan SQL Server Agent. | Tugas Administrasi Otomatis (SQL Server Agent) |
NOSQLPS
Dimulai dengan SQL Server 2019, Anda dapat menonaktifkan SQLPS. Pada baris pertama langkah pekerjaan jenis PowerShell, Anda dapat menambahkan #NOSQLPS
, yang menghentikan Agen SQL memuat otomatis modul SQLPS. Sekarang Pekerjaan Agen SQL Anda menjalankan versi PowerShell yang diinstal pada komputer, lalu Anda dapat menggunakan modul PowerShell lainnya yang Anda suka.
Untuk menggunakan modul SqlServer di langkah Pekerjaan Agen SQL, Anda dapat menempatkan kode ini pada dua baris pertama skrip Anda.
#NOSQLPS
Import-Module -Name SqlServer