

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

# Menggunakan Agen SQL Server untuk Amazon RDS
<a name="Appendix.SQLServer.CommonDBATasks.Agent"></a>

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](http://msdn.microsoft.com/en-us/library/ms189237) 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](#SQLServerAgent.Replicate).  
Deployment multi-AZ memiliki batas 10.000 pekerjaan SQL Server Agent. Jika Anda membutuhkan batas yang lebih tinggi, minta kenaikan dengan menghubungi Dukungan. Buka halaman [Pusat AWS Dukungan](https://console.aws.amazon.com/support/home#/), 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
<a name="SQLServerAgent.Replicate"></a>

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\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/SQLAgentJob.png)


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\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/SQLAgentJob_last_sync_time.png)


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, lihat[Konfigurasi TempDB untuk penerapan Multi-AZ](SQLServer.TempDB.MAZ.md).

# Peran Agen SQL Server
<a name="SQLServerAgent.AgentRoles"></a>

RDS untuk SQL Server mendukung peran Agen SQL Server berikut dengan berbagai tingkat izin untuk mengelola pekerjaan:
+ **SQLAgentUserRole**

  Izin
  + Membuat dan mengelola pekerjaan, jadwal, dan operator mereka sendiri
  + Lihat properti pekerjaan dan jadwal mereka sendiri
  + Tidak dapat melihat atau mengelola pekerjaan yang dibuat oleh pengguna lain

  Peran ini cocok untuk pengguna yang perlu membuat dan mengelola pekerjaan mereka sendiri tetapi tidak memerlukan akses ke pekerjaan yang dibuat oleh pengguna lain.
+ **SQLAgentReaderRole**

  Izin
  + Semua izin dari SQLAgent UserRole
  + Lihat daftar semua pekerjaan dan jadwal, termasuk yang dibuat oleh orang lain
  + Lihat properti dari semua pekerjaan
  + Tinjau riwayat pekerjaan

  Peran ini cocok untuk pengguna yang perlu memantau status semua pekerjaan tetapi tidak perlu mengelolanya.
+ **SQLAgentOperatorRole**

  Izin
  + Semua izin dari dan SQLAgent UserRole SQLAgent ReaderRole
  + Jalankan, hentikan, atau mulai pekerjaan
  + Kelola riwayat pekerjaan
  + Aktifkan/nonaktifkan pekerjaan dan jadwal
  + Lihat operator dan proxy

  Peran ini memberikan izin paling komprehensif dan cocok untuk pengguna yang perlu memiliki kontrol penuh atas semua pekerjaan.

Gunakan perintah berikut untuk menetapkan peran ke login SQL Server Anda:

```
USE msdb;
EXEC sp_addrolemember 'SQLAgentOperatorRole', 'username';
```

## Mengelola SQLAgent OperatorRole di RDS untuk SQL Server
<a name="SQLServerAgent.AgentRoles.ManageSQLAgentOperatorRole"></a>

Untuk melihat pekerjaan saat ini, Anda harus menambahkan SQLAgent OperatorRole ke login SQL Server Anda dan menghapusnya sebelum memutuskan sambungan dari database Anda.

Untuk memvisualisasikan pohon Agen SQL Server di SQL Server Management Studio, ikuti petunjuk berikut:

**Lihat Agen SQL Server di SQL Server Management Studio (SSMS)**

1. Menggunakan kredensil master RDS, masuk ke instance RDS SQL Server dan berikan pengguna yang diinginkan. SQLAgent UserRole

   ```
   USE msdb
   GO
   IF NOT EXISTS(SELECT name FROM sys.database_principals WHERE name = 'UserName')
   BEGIN
   CREATE USER UserName FROM LOGIN UserName
   END
   GO
   ALTER ROLE SQLAgentUserRole ADD MEMBER UserName
   GO
   GRANT ALTER ON ROLE::[SQLAgentOperatorRole] to UserName
   GO
   ```

   Perintah ini membuat pengguna di `msdb` database, jika tidak ada. Ini juga menambahkan pengguna pada SQLAgentUserRole, sehingga pohon Agen SQL Server pada SSMS dapat dilihat. Akhirnya, ia memberikan izin mengubah SQLAgent OperatorRole ke pengguna. Ini memungkinkan pengguna untuk add/remove dirinya sendiri dari peran itu. 

1. Untuk menambahkan diri Anda ke peran yang disebutkan di atas, sambungkan ke instance RDS SQL Server, dengan pengguna yang perlu melihat pekerjaan, dan jalankan skrip berikut.

   ```
   use msdb
   go
   ALTER ROLE SQLAgentOperatorRole ADD MEMBER UserName
   GO
   ```

   Setelah ini, klik kanan pada folder **Jobs**, dan pilih **Refresh**.

1. Saat Anda melakukan tindakan ini, tab **Jobs** menampilkan tombol **\$1** (plus). Klik untuk memperluas daftar SQL Server Agent Jobs.

1. 
**penting**  
Sebelum Anda memutuskan sambungan dari instance RDS SQL Server, Anda perlu menghapus diri Anda dari. SQLAgent OperatorRole

   Untuk menghapus login Anda dari SQLAgentOperatorRole, jalankan kueri berikut sebelum memutuskan atau menutup Management Studio:

   ```
   USE msdb
   GO
   ALTER ROLE SQLAgentOperatorRole DROP MEMBER UserName
   GO
   ```

Untuk informasi selengkapnya, lihat [Memanfaatkan SQLAgent OperatorRole di RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

# Menambahkan pengguna ke SQLAgentUser peran
<a name="SQLServerAgent.AddUser"></a>

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

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

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

1. Tambahkan pengguna ke `SQLAgentUserRole` menggunakan prosedur `sp_addrolemember` yang disimpan sistem.

Misalnya, misalkan nama pengguna master Anda **admin** dan Anda ingin memberikan akses ke Agen SQL Server ke pengguna bernama **theirname** dengan kata sandi**theirpassword**. Dalam kasus ini, Anda dapat menggunakan prosedur berikut.

**Untuk menambahkan pengguna ke SQLAgentUser peran**

1. Masuk sebagai pengguna utama.

1. 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
<a name="SQLServerAgent.DeleteJob"></a>

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 informasi selengkapnya, lihat [Memanfaatkan SQLAgent OperatorRole di RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

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

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