Menggunakan SQL Server Agent - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan SQL Server Agent

Dengan Amazon RDS, Anda dapat menggunakan SQL Server Agent di instans DB yang menjalankan Microsoft SQL Server Enterprise Edition, Standard Edition, atau Web Edition. SQL Server Agent adalah layanan Microsoft Windows yang menjalankan tugas administratif terjadwal, yang disebut pekerjaan. Anda dapat menggunakan SQL Server Agent untuk menjalankan pekerjaan T-SQL untuk membangun ulang indeks, menjalankan pemeriksaan kerusakan, dan mengumpulkan data agregat dalam instans DB SQL Server.

Saat Anda membuat instans DB SQL Server, pengguna utama didaftarkan dalam peran SQLAgentUserRole.

SQL Server Agent dapat menjalankan pekerjaan sesuai jadwal, sebagai respons terhadap peristiwa tertentu, atau sesuai permintaan. Untuk informasi selengkapnya, lihat SQL Server Agent dalam dokumentasi Microsoft.

catatan

Hindari menjadwalkan pekerjaan untuk dijalankan selama masa pemeliharaan dan pencadangan instans DB. Proses pemeliharaan dan pencadangan yang diluncurkan oleh AWS dapat mengganggu pekerjaan atau menyebabkannya dibatalkan.

Dalam deployment Multi-AZ, pekerjaan SQL Server Agent direplikasi dari host utama ke host sekunder saat fitur replikasi pekerjaan diaktifkan. Untuk informasi selengkapnya, lihat Mengaktifkan replikasi pekerjaan SQL Server Agent.

Deployment multi-AZ memiliki batas 10.000 pekerjaan SQL Server Agent. Jika Anda membutuhkan batas yang lebih tinggi, minta kenaikan dengan menghubungi AWS Support. Buka halaman Pusat AWS Support, masuk jika perlu, dan pilih Buat kasus. Pilih Peningkatan batas layanan. Lengkapi lalu kirimkan formulir.

Untuk melihat riwayat pekerjaan SQL Server Agent individu di SQL Server Management Studio (SSMS), buka Object Explorer, klik kanan pekerjaan, lalu pilih Lihat Riwayat.

Karena SQL Server Agent berjalan di host terkelola di instans DB, ada beberapa tindakan yang tidak didukung:

  • Menjalankan pekerjaan replikasi dan menjalankan skrip baris perintah dengan menggunakan ActiveX, shell perintah Windows, atau Windows tidak didukung. PowerShell

  • Anda tidak dapat memulai, menghentikan, atau memulai ulang SQL Server Agent secara manual.

  • Pemberitahuan email melalui SQL Server Agent tidak tersedia dari instans DB.

  • Peringatan dan operator SQL Server Agent tidak didukung.

  • Menggunakan SQL Server Agent untuk membuat cadangan tidak didukung. Gunakan Amazon RDS untuk mencadangkan instans DB.

  • Saat ini, RDS untuk SQL Server tidak mendukung penggunaan token SQL Server Agent.

Mengaktifkan replikasi pekerjaan SQL Server Agent

Anda dapat mengaktifkan replikasi pekerjaan SQL Server Agent menggunakan prosedur tersimpan berikut:

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob';

Anda dapat menjalankan prosedur tersimpan di semua versi SQL Server yang didukung oleh Amazon RDS for SQL Server. Pekerjaan dalam kategori berikut direplikasi:

  • [Tidak Dikategorikan (Lokal)]

  • [Tidak Dikategorikan (Multi-Server)]

  • [Tidak Dikategorikan]

  • Data Collector

  • Database Engine Tuning Advisor

  • Database Maintenance

  • Full-Text

Hanya pekerjaan yang menggunakan langkah pekerjaan T-SQL yang akan direplikasi. Pekerjaan dengan tipe langkah seperti SQL Server Integration Services (SSIS), SQL Server Reporting Services (SSRS), Replikasi, dan tidak direplikasi. PowerShell Pekerjaan yang menggunakan Database Mail dan objek tingkat server tidak direplikasi.

penting

Host utama adalah sumber kebenaran untuk replikasi. Sebelum mengaktifkan replikasi pekerjaan, pastikan bahwa pekerjaan Agen SQL Server Anda berada di urutan pertama. Jika ini tidak dilakukan, pekerjaan Agen SQL Server Anda akan dihapus jika Anda mengaktifkan fitur saat pekerjaan yang lebih baru berada di host sekunder.

Anda dapat menggunakan fungsi berikut untuk mengonfirmasi apakah replikasi telah diaktifkan atau belum.

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

Kueri T-SQL akan menampilkan hal berikut ini jika pekerjaan SQL Server Agent sedang mereplikasi. Jika pekerjaan SQL Server Agent sedang tidak mereplikasi, kueri T-SQL tidak akan menampilkan apa pun untuk object_class.

Pekerjaan SQL Server Agent sedang mereplikasi

Anda dapat menggunakan fungsi berikut untuk mengetahui kapan terakhir kali objek disinkronkan dalam waktu UTC.

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

Misalnya, Anda memodifikasi pekerjaan SQL Server Agent pada 01:00. Anda mengharapkan waktu sinkronisasi terbaru setelah 01:00, yang menunjukkan bahwa sinkronisasi telah terjadi.

Setelah sinkronisasi, nilai yang ditampilkan untuk date_created dan date_modified pada simpul sekunder diperkirakan akan cocok.

Objek server terakhir kali disinkronkan adalah 01:21:23

Jika Anda juga menggunakan tempdb replikasi, Anda dapat mengaktifkan replikasi untuk pekerjaan Agen SQL dan tempdb konfigurasi dengan menyediakannya dalam parameter: @object_type

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';

Untuk informasi lebih lanjut tentang tempdb replikasi, lihatKonfigurasi TempDB untuk penerapan Multi-AZ.

Menambahkan pengguna ke peran SQL AgentUser

Untuk mengizinkan login atau pengguna tambahan menggunakan SQL Server Agent, masuk sebagai pengguna utama lalu lakukan hal berikut:

  1. Buat login level server lainnya menggunakan perintah CREATE LOGIN.

  2. Buat pengguna di msdb menggunakan perintah CREATE USER, lalu tautkan pengguna ini ke login yang telah Anda buat di langkah sebelumnya.

  3. Tambahkan pengguna ke SQLAgentUserRole menggunakan prosedur sp_addrolemember yang disimpan sistem.

Misalnya, anggap nama pengguna utama Anda adalah admin dan Anda ingin memberikan akses ke SQL Server Agent kepada pengguna bernama theirname dengan kata sandi theirpassword. Dalam kasus ini, Anda dapat menggunakan prosedur berikut.

Untuk menambahkan pengguna ke peran SQL AgentUser
  1. Masuk sebagai pengguna utama.

  2. Jalankan perintah berikut:

    --Initially set context to master database USE [master]; GO --Create a server-level login named theirname with password theirpassword CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword'; GO --Set context to msdb database USE [msdb]; GO --Create a database user named theirname and link it to server-level login theirname CREATE USER [theirname] FOR LOGIN [theirname]; GO --Added database user theirname in msdb to SQLAgentUserRole in msdb EXEC sp_addrolemember [SQLAgentUserRole], [theirname];

Menghapus pekerjaan SQL Server Agent

Anda menggunakan prosedur tersimpan sp_delete_job untuk menghapus pekerjaan SQL Server Agent di Amazon RDS for Microsoft SQL Server.

Anda tidak dapat menggunakan SSMS untuk menghapus pekerjaan SQL Server Agent. Jika mencoba melakukannya, Anda akan mendapatkan pesan kesalahan yang serupa dengan pesan berikut ini:

The EXECUTE permission was denied on the object 'xp_regread', database 'mssqlsystemresource', schema 'sys'.

Sebagai layanan terkelola, RDS dibatasi untuk tidak menjalankan prosedur yang mengakses registri Windows. Ketika Anda menggunakan SSMS untuk menghapus pekerjaan, SSMS akan mencoba menjalankan proses (xp_regread) yang tidak diotorisasi RDS.

catatan

Di RDS for SQL Server, hanya anggota peran sysadmin yang diizinkan untuk memperbarui atau menghapus pekerjaan yang dimiliki oleh login lain.

Untuk menghapus pekerjaan SQL Server Agent
  • Jalankan pernyataan T-SQL berikut:

    EXEC msdb..sp_delete_job @job_name = 'job_name';