

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

# Fitur tambahan untuk Microsoft SQL Server di Amazon RDS
<a name="User.SQLServer.AdditionalFeatures"></a>

Di bagian berikut, Anda dapat menemukan informasi tentang menambah RDS instans Amazon yang menjalankan mesin Microsoft SQL Server DB.

**Topics**
+ [Menggunakan Kebijakan Kata Sandi untuk login SQL Server pada RDS untuk SQL Server](SQLServer.Concepts.General.PasswordPolicy.Using.md)
+ [Mengintegrasikan instans DB Amazon RDS for SQL Server dengan Amazon S3](User.SQLServer.Options.S3-integration.md)
+ [Menggunakan Database Mail di Amazon RDS untuk SQL Server](SQLServer.DBMail.md)
+ [Amazon RDS for SQL Server mendukung penyimpanan instans lokal untuk basis data tempdb](SQLServer.InstanceStore.md)
+ [Menggunakan acara diperpanjang dengan Amazon RDS untuk Microsoft SQL Server](SQLServer.ExtendedEvents.md)
+ [Akses ke cadangan log transaksi dengan RDS for SQL Server](USER.SQLServer.AddlFeat.TransactionLogAccess.md)

# Menggunakan Kebijakan Kata Sandi untuk login SQL Server pada RDS untuk SQL Server
<a name="SQLServer.Concepts.General.PasswordPolicy.Using"></a>

Amazon RDS memungkinkan Anda mengatur kebijakan kata sandi untuk instans Amazon RDS DB yang menjalankan Microsoft SQL Server. Gunakan ini untuk mengatur kompleksitas, panjang, dan persyaratan penguncian untuk login yang menggunakan SQL Server Authentication untuk mengautentikasi ke instans DB Anda.

## Istilah kunci
<a name="SQLServer.Concepts.General.PasswordPolicy.Using.KT"></a>

**Login**  
**Di SQL Server, prinsipal tingkat server yang dapat mengautentikasi ke instance database disebut sebagai login.** Mesin database lain mungkin merujuk pada prinsipal ini sebagai *pengguna*. Dalam RDS untuk SQL Server, login dapat mengautentikasi menggunakan SQL Server Authentication atau Windows Authentication.

**Login SQL Server**  
Login yang menggunakan nama pengguna dan kata sandi untuk mengautentikasi menggunakan SQL Server Authentication adalah login SQL Server. Kebijakan kata sandi yang Anda konfigurasikan melalui parameter DB hanya berlaku untuk login SQL Server.

**Login Windows**  
Login yang didasarkan pada prinsipal Windows dan mengotentikasi menggunakan Windows Authentication adalah login Windows. Anda dapat mengonfigurasi kebijakan kata sandi untuk login Windows Anda di Active Directory. Untuk informasi selengkapnya, lihat [Menggunakan Active Directory dengan RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

## Mengaktifkan dan menonaktifkan kebijakan untuk setiap login
<a name="SQLServer.Concepts.General.PasswordPolicy.EnableDisable"></a>

 Setiap login SQL Server memiliki flag untuk `CHECK_POLICY` dan. `CHECK_EXPIRATION` Secara default, login baru dibuat dengan `CHECK_POLICY` set to `ON` dan `CHECK_EXPIRATION` set ke`OFF`. 

Jika `CHECK_POLICY` diaktifkan untuk login, RDS untuk SQL Server memvalidasi kata sandi terhadap kompleksitas dan persyaratan panjang minimum. Kebijakan penguncian juga berlaku. Contoh pernyataan T-SQL untuk mengaktifkan `CHECK_POLICY` dan: `CHECK_EXPIRATION` 

```
ALTER LOGIN [master_user] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
```

Jika `CHECK_EXPIRATION` diaktifkan, kata sandi tunduk pada kebijakan usia kata sandi. Pernyataan T-SQL untuk memeriksa apakah `CHECK_POLICY` dan `CHECK_EXPIRATION` diatur:

```
SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;
```

## Parameter kebijakan kata sandi
<a name="SQLServer.Concepts.General.PasswordPolicy.PWDPolicyParams"></a>

Semua parameter kebijakan kata sandi bersifat dinamis dan tidak memerlukan reboot DB untuk diterapkan. Tabel berikut mencantumkan parameter DB yang dapat Anda atur untuk mengubah kebijakan kata sandi untuk login SQL Server:


****  

| Parameter DB | Deskripsi | Nilai yang Diizinkan | nilai default | 
| --- | --- | --- | --- | 
| rds.password\$1complexity\$1enabled | Persyaratan kompleksitas kata sandi harus dipenuhi saat membuat atau mengubah kata sandi untuk login SQL Server. Kendala berikut harus dipenuhi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.PasswordPolicy.Using.html)  | 0,1 | 0 | 
| rds.password\$1min\$1length | Jumlah minimum karakter yang diperlukan dalam kata sandi untuk login SQL Server. | 0-14 | 0 | 
| rds.password\$1min\$1age | Jumlah minimum hari kata sandi login SQL Server harus digunakan sebelum pengguna dapat mengubahnya. Kata sandi dapat segera diubah saat disetel ke 0. | 0-998 | 0 | 
| rds.password\$1max\$1age | Jumlah hari maksimum kata sandi login SQL Server dapat digunakan setelah itu pengguna diminta untuk mengubahnya. Kata sandi tidak pernah kedaluwarsa saat disetel ke 0. | 0-999 | 42 | 
| rds.password\$1lockout\$1threshold | Jumlah upaya login gagal berturut-turut yang menyebabkan login SQL Server menjadi terkunci. | 0-999 | 0 | 
| rds.password\$1lockout\$1duration | Jumlah menit login SQL Server yang terkunci harus menunggu sebelum dibuka kuncinya. | 1-60 | 10 | 
| rds.password\$1lockout\$1reset\$1counter\$1after | Jumlah menit yang harus berlalu setelah upaya login gagal sebelum penghitung upaya login yang gagal diatur ulang ke 0. | 1-60 | 10 | 

**catatan**  
Untuk informasi selengkapnya tentang kebijakan kata sandi SQL Server, lihat [Kebijakan Kata Sandi](https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy).   
Kompleksitas kata sandi dan kebijakan panjang minimum juga berlaku untuk pengguna DB dalam database yang terkandung. Untuk informasi selengkapnya, lihat [Database Terisi](https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases).

Kendala berikut berlaku untuk parameter kebijakan kata sandi:
+ `rds.password_min_age`Parameter harus kurang dari`rds.password_max_age parameter`, kecuali `rds.password_max_age` diatur ke 0
+ `rds.password_lockout_reset_counter_after`Parameter harus kurang dari atau sama dengan `rds.password_lockout_duration` parameter.
+ Jika `rds.password_lockout_threshold` diatur ke 0, `rds.password_lockout_duration` dan `rds.password_lockout_reset_counter_after` tidak berlaku.

### Pertimbangan untuk login yang ada
<a name="SQLServer.Concepts.General.PasswordPolicy.ExistingLogins"></a>

Setelah memodifikasi kebijakan kata sandi pada sebuah instance, kata sandi yang ada untuk login **tidak** dievaluasi secara surut terhadap kompleksitas kata sandi dan persyaratan panjang yang baru. Hanya kata sandi baru yang divalidasi terhadap kebijakan baru. 

SQL Server mengevaluasi **kata** sandi yang ada untuk persyaratan usia.

Ada kemungkinan kata sandi segera kedaluwarsa setelah kebijakan kata sandi diubah. Misalnya, jika login telah `CHECK_EXPIRATION` diaktifkan dan kata sandinya terakhir diubah 100 hari yang lalu dan Anda menetapkan `rds.password_max_age` parameter menjadi 5 hari, kata sandi segera kedaluwarsa dan login perlu mengubah kata sandi mereka pada upaya berikutnya untuk masuk.

**catatan**  
RDS untuk SQL Server tidak mendukung kebijakan riwayat kata sandi. Kebijakan riwayat mencegah login menggunakan kembali kata sandi yang digunakan sebelumnya.

### Pertimbangan untuk deployment multi-AZ
<a name="SQLServer.Concepts.General.PasswordPolicy.MAZPasswords"></a>

Status penghitung dan penguncian upaya login yang gagal untuk instance Multi-AZ tidak mereplikasi antar node. Jika login dikunci ketika instance Multi-AZ gagal selesai, kemungkinan login sudah dibuka kuncinya di node baru.

# Pertimbangan kata sandi untuk login master
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin"></a>

Saat Anda membuat instance RDS untuk SQL Server DB, kata sandi pengguna utama tidak dievaluasi terhadap kebijakan kata sandi. Kata sandi master baru juga tidak dievaluasi terhadap kata sandi saat melakukan operasi ke pengguna master, khususnya saat mengatur `MasterUserPassword` `ModifyDBInstance` perintah. Dalam kedua kasus, Anda dapat mengatur kata sandi untuk pengguna utama yang tidak memenuhi kebijakan kata sandi Anda, dan operasi masih berhasil. Jika kebijakan tidak terpenuhi, RDS mencoba untuk meningkatkan acara RDS, dengan rekomendasi untuk menetapkan kata sandi yang kuat. Berhati-hatilah untuk hanya menggunakan kata sandi yang kuat untuk pengguna utama. 

RDS mencoba menghasilkan pesan peristiwa berikut ketika kata sandi pengguna utama tidak memenuhi persyaratan kebijakan kata sandi:
+ Pengguna master dibuat, tetapi kata sandi tidak memenuhi persyaratan panjang minimum kebijakan kata sandi Anda. Pertimbangkan untuk menggunakan kata sandi yang lebih kuat.
+ Pengguna master dibuat, tetapi kata sandi tidak memenuhi persyaratan kompleksitas kebijakan kata sandi Anda. Pertimbangkan untuk menggunakan kata sandi yang lebih kuat.
+ Kata sandi pengguna utama disetel ulang, tetapi kata sandi tidak memenuhi persyaratan panjang minimum kebijakan kata sandi Anda. Pertimbangkan untuk menggunakan kata sandi yang lebih kuat.
+ Kata sandi pengguna utama disetel ulang, tetapi kata sandi tidak memenuhi persyaratan kompleksitas kebijakan kata sandi Anda. Pertimbangkan untuk menggunakan kata sandi yang lebih kuat.

Secara default, pengguna master dibuat dengan `CHECK_POLICY` dan `CHECK_EXPIRATION` diatur ke`OFF`. Untuk menerapkan kebijakan kata sandi ke pengguna utama, Anda harus mengaktifkan flag ini secara manual untuk pengguna master setelah pembuatan instans DB. Setelah Anda mengaktifkan flag ini, ubah kata sandi pengguna utama langsung di SQL Server (mis. melalui pernyataan T-SQL atau SSMS) untuk memvalidasi kata sandi baru terhadap kebijakan kata sandi.

**catatan**  
Jika pengguna master terkunci, Anda dapat membuka kunci pengguna dengan mengatur ulang kata sandi pengguna utama menggunakan `ModifyDBInstance` perintah.

## Mengubah kata sandi pengguna master
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin.Reset"></a>

Anda dapat memodifikasi kata sandi pengguna master dengan menggunakan perintah [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html).

**catatan**  
Saat Anda mengatur ulang kata sandi pengguna utama, RDS me-reset berbagai izin untuk pengguna master dan pengguna master mungkin kehilangan izin tertentu. Menyetel ulang kata sandi pengguna master juga membuka kunci pengguna utama, jika terkunci.

RDS memvalidasi kata sandi pengguna utama baru dan mencoba untuk memancarkan peristiwa RDS jika kata sandi tidak memenuhi kebijakan. RDS menetapkan kata sandi meskipun tidak memenuhi kebijakan kata sandi. 

# Mengintegrasikan instans DB Amazon RDS for SQL Server dengan Amazon S3
<a name="User.SQLServer.Options.S3-integration"></a>

Anda dapat mentransfer file antara instans DB yang menjalankan Amazon RDS for SQL Server dan bucket Amazon S3. Dengan melakukannya, Anda dapat menggunakan fitur Amazon S3 dengan SQL Server seperti BULK INSERT. Misalnya, Anda dapat mengunduh .csv, .xml, .txt, dan file lain dari Amazon S3 ke host instans DB dan mengimpor data dari `D:\S3\` ke dalam basis data. Semua file disimpan di `D:\S3\` pada instans DB.

Batasan berikut berlaku:

**catatan**  
Lalu lintas antara host RDS dan rute S3 melalui titik akhir VPC di RDS internal VPCs untuk semua fitur SQL Server yang menggunakan S3. Lalu lintas ini tidak menggunakan ENI titik akhir instans RDS. Kebijakan bucket S3 tidak dapat membatasi lalu lintas RDS berdasarkan kondisi jaringan.
+ File yang ada di folder `D:\S3` akan dihapus pada replika siaga setelah failover pada instans Multi-AZ. Untuk informasi selengkapnya, lihat [Batasan Multi-AZ untuk integrasi S3](#S3-MAZ).
+ Instans DB dan bucket S3 harus berada di AWS Region yang sama.
+ Jika Anda menjalankan lebih dari satu tugas integrasi S3 sekaligus, tugas akan berjalan secara berurutan, bukan secara paralel.
**catatan**  
Tugas integrasi S3 akan berada di antrean yang sama dengan tugas pencadangan dan pemulihan native. Maksimal, Anda hanya dapat memiliki dua tugas yang berlangsung dalam antrean ini kapan saja. Oleh karena itu, dua tugas pencadangan dan pemulihan native yang berjalan akan memblokir tugas integrasi S3.
+ Anda harus mengaktifkan ulang fitur integrasi S3 pada instans yang dipulihkan. Integrasi S3 tidak akan disebarkan dari instans sumber ke instans yang dipulihkan. File dalam `D:\S3` dihapus pada instans yang dipulihkan.
+ Pengunduhan ke instans DB dibatasi hingga 100 file. Dengan kata lain, tidak boleh ada lebih dari 100 file di `D:\S3\`.
+ Hanya file tanpa ekstensi file atau dengan ekstensi file berikut yang dapat diunduh: .abf, .asdatabase, .bcp, .configsettings, .csv, .dat, .deploymentoptions, .deploymenttargets, .fmt, .info, .ispac, .lst, .tbl, .txt, .xml, dan .xmla.
+ Bucket S3 harus memiliki pemilik yang sama dengan peran terkait AWS Identity and Access Management (IAM). Oleh karena itu, integrasi S3 lintas akun tidak didukung.
+ bucket S3 tidak dapat dibuka untuk publik.
+ Ukuran file untuk pengunggahan dari RDS ke S3 dibatasi 50 GB per file.
+ Ukuran file untuk unduhan dari S3 ke RDS dibatasi sebesar ukuran maksimum yang didukung oleh S3.

**Topics**
+ [Prasyarat untuk mengintegrasikan RDS for SQL Server dengan S3](Appendix.SQLServer.Options.S3-integration.preparing.md)
+ [Mengaktifkan RDS integrasi SQL Server dengan S3](Appendix.SQLServer.Options.S3-integration.enabling.md)
+ [Mentransfer file antara RDS for SQL Server dan Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md)
+ [Daftar file pada instans RDS DB](Appendix.SQLServer.Options.S3-integration.using.listing-files.md)
+ [Menghapus file pada instans RDS DB](Appendix.SQLServer.Options.S3-integration.using.deleting-files.md)
+ [Memantau status tugas transfer file](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md)
+ [Membatalkan tugas](Appendix.SQLServer.Options.S3-integration.canceltasks.md)
+ [Batasan Multi-AZ untuk integrasi S3](#S3-MAZ)
+ [Menonaktifkan RDS integrasi SQL Server dengan S3](Appendix.SQLServer.Options.S3-integration.disabling.md)

Untuk informasi selengkapnya tentang menggunakan file di Amazon S3, lihat [Mulai menggunakan Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3).

# Prasyarat untuk mengintegrasikan RDS for SQL Server dengan S3
<a name="Appendix.SQLServer.Options.S3-integration.preparing"></a>

Sebelum Anda memulai, temukan atau buat bucket S3 yang ingin Anda gunakan. Selain itu, tambahkan izin sehingga RDS instans DB dapat mengakses bucket S3. Untuk mengonfigurasi akses ini, Anda perlu membuat kebijakan IAM dan peran IAM.

## Konsol
<a name="Appendix.SQLServer.Options.S3-integration.preparing.console"></a>

**Untuk membuat kebijakan IAM bagi Aurora untuk mengakses Amazon S3**

1. Di [Konsol Manajemen IAM](https://console.aws.amazon.com/iam/home?#home), pilih **Kebijakan** di panel navigasi.

1. Buat kebijakan baru, dan gunakan **Editor visual** untuk langkah-langkah berikut.

1. Untuk **Layanan**, masukkan **S3** lalu pilih layanan **S3**.

1. Untuk **Tindakan**, pilih yang berikut ini untuk memberikan akses yang diperlukan oleh instans DB Anda:
   + `ListAllMyBuckets` – diperlukan.
   + `ListBucket` – diperlukan.
   + `GetBucketAcl` – diperlukan.
   + `GetBucketLocation` – diperlukan.
   + `GetObject` – diperlukan untuk mengunduh file dari S3 ke `D:\S3\`
   + `PutObject` – diperlukan untuk mengunggah file dari `D:\S3\` ke S3
   + `ListMultipartUploadParts` – diperlukan untuk mengunggah file dari `D:\S3\` ke S3
   + `AbortMultipartUpload` – diperlukan untuk mengunggah file dari `D:\S3\` ke S3

1. Untuk **Sumber Daya**, opsi yang ditampilkan bergantung pada tindakan mana yang Anda pilih di langkah sebelumnya. Anda mungkin melihat opsi untuk **bucket**, **objek**, atau keduanya. Untuk setiap hal berikut ini, tambahkan Amazon Resource Name (ARN) yang sesuai.

   Untuk **bucket**, tambahkan ARN untuk bucket yang ingin Anda gunakan. Misalnya, jika bucket Anda diberi nama *amzn-s3-demo-bucket*, atur ARN ke `arn:aws:s3:::amzn-s3-demo-bucket`.

   Untuk **objek**, masukkan ARN untuk bucket lalu pilih salah satu hal berikut:
   + Untuk memberikan akses ke semua file dalam bucket tertentu, pilih **Semua** untuk **Nama bucket** dan **Nama objek**.
   + Untuk memberikan akses ke file atau folder tertentu di bucket, ARNs sediakan bucket dan objek tertentu yang ingin diakses SQL Server. 

1. Ikuti petunjuk dalam konsol hingga Anda selesai membuat kebijakan.

   Hal di atas adalah panduan singkat untuk membuat kebijakan. Untuk informasi selengkapnya tentang pembuatan peran IAM, lihat [Membuat kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

**Untuk membuat peran IAM yang menggunakan kebijakan IAM dari prosedur sebelumnya**

1. Di [Konsol Manajemen IAM](https://console.aws.amazon.com/iam/home?#home), pilih **Peran** di panel navigasi.

1. Buat peran IAM baru, dan pilih opsi berikut saat muncul di konsol:
   + **AWSlayanan**
   + **RDS**
   + **RDS – Tambahkan Peran ke Basis Data**

   Lalu, pilih **Next:Permissions** di bagian bawah.

1. Untuk **Lampirkan kebijakan izin**, masukkan nama kebijakan IAM yang telah Anda buat sebelumnya. Lalu, pilih kebijakan dari daftar.

1. Ikuti petunjuk dalam konsol hingga Anda selesai membuat peran.

   Hal di atas adalah panduan singkat untuk membuat peran. Jika Anda menginginkan petunjuk yang lebih terperinci tentang pembuatan peran, lihat [Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) dalam *Panduan Pengguna IAM*.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.preparing.CLI"></a>

Untuk memberi Amazon RDS akses ke bucket Amazon S3, gunakan proses berikut:

1. Buat kebijakan IAM yang memberi Amazon RDS akses ke bucket S3.

1. Buat peran IAM yang dapat digunakan Amazon RDS atas nama Anda untuk mengakses bucket S3 Anda.

   Untuk informasi selengkapnya, lihat [Membuat peran untuk mendelegasikan izin ke pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) dalam *Panduan Pengguna IAM*.

1. Lampirkan kebijakan IAM yang Anda buat ke peran IAM yang Anda buat.

**Untuk membuat kebijakan IAM**

Sertakan tindakan yang sesuai untuk memberikan akses yang diperlukan oleh instans DB Anda:
+ `ListAllMyBuckets` – diperlukan.
+ `ListBucket` – diperlukan.
+ `GetBucketAcl` – diperlukan.
+ `GetBucketLocation` – diperlukan.
+ `GetObject` – diperlukan untuk mengunduh file dari S3 ke `D:\S3\`
+ `PutObject` – diperlukan untuk mengunggah file dari `D:\S3\` ke S3
+ `ListMultipartUploadParts` – diperlukan untuk mengunggah file dari `D:\S3\` ke S3
+ `AbortMultipartUpload` – diperlukan untuk mengunggah file dari `D:\S3\` ke S3

1. AWS CLIPerintah berikut membuat kebijakan IAM bernama `rds-s3-integration-policy` dengan opsi ini. Kebijakan ini memberikan akses ke bucket bernama *amzn-s3-demo-bucket*.  
**Example**  

   Untuk Linux, macOS, atau Unix:

   ```
   aws iam create-policy \
   	 --policy-name rds-s3-integration-policy \
   	 --policy-document '{
   	        "Version": "2012-10-17",		 	 	 
   	        "Statement": [
   	            {
   	                "Effect": "Allow",
   	                "Action": "s3:ListAllMyBuckets",
   	                "Resource": "*"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:ListBucket",
   	                    "s3:GetBucketAcl",
   	                    "s3:GetBucketLocation"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:GetObject",
   	                    "s3:PutObject",
   	                    "s3:ListMultipartUploadParts",
   	                    "s3:AbortMultipartUpload"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
   	            }
   	        ]
   	    }'
   ```

   Untuk Windows:

   Pastikan untuk mengubah akhiran baris ke akhiran baris yang didukung oleh antarmuka Anda (`^`, bukan `\`). Selain itu, di Windows, Anda harus meng-escape semua tanda kutip ganda dengan `\`. Agar tidak perlu meng-escape kutipan dalam JSON, Anda dapat menyimpannya ke file dan meneruskannya sebagai parameter. 

   Pertama, buat file `policy.json` dengan kebijakan izin berikut:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:ListAllMyBuckets",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketACL",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
           }
       ]
   }
   ```

------

   Lalu, gunakan perintah berikut ini untuk membuat kebijakan:

   ```
   aws iam create-policy ^
        --policy-name rds-s3-integration-policy ^
        --policy-document file://file_path/assume_role_policy.json
   ```

1. Setelah kebijakan dibuat, catat Amazon Resource Name (ARN) kebijakan tersebut. Anda memerlukan ARN ini untuk langkah berikutnya.

**Untuk membuat peran IAM**
+ AWS CLIPerintah berikut menciptakan peran `rds-s3-integration-role` IAM untuk tujuan ini.  
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole"
  	       }
  	     ]
  	   }'
  ```

  Untuk Windows:

  Pastikan untuk mengubah akhiran baris ke akhiran baris yang didukung oleh antarmuka Anda (`^`, bukan `\`). Selain itu, di Windows, Anda harus meng-escape semua tanda kutip ganda dengan `\`. Agar tidak perlu meng-escape kutipan dalam JSON, Anda dapat menyimpannya ke file dan meneruskannya sebagai parameter. 

  Pertama, buat file `assume_role_policy.json` dengan kebijakan berikut:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------

  Lalu gunakan perintah berikut ini untuk membuat peran IAM:

  ```
  aws iam create-role ^
       --role-name rds-s3-integration-role ^
       --assume-role-policy-document file://file_path/assume_role_policy.json
  ```  
**Example menggunakan kunci konteks kondisi global untuk membuat peran IAM**  

  Sebaiknya gunakan kunci konteks kondisi global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) dan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) dalam relasi kepercayaan berbasis sumber daya untuk membatasi izin layanan ke sumber daya tertentu. Ini adalah cara paling efektif untuk melindungi dari [masalah "confused deputy"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

  Anda dapat menggunakan kedua kunci konteks kondisi global dan memiliki nilai `aws:SourceArn` yang berisi ID akun. Dalam hal ini, nilai `aws:SourceAccount` dan akun dalam nilai `aws:SourceArn` harus menggunakan ID akun yang sama ketika digunakan dalam pernyataan kebijakan yang sama.
  + Gunakan `aws:SourceArn` jika Anda ingin akses lintas layanan untuk satu sumber daya.
  + Gunakan `aws:SourceAccount` jika Anda ingin mengizinkan sumber daya apa pun di akun tersebut dikaitkan dengan penggunaan lintas layanan.

  Dalam kebijakan, pastikan untuk menggunakan kunci konteks kondisi global `aws:SourceArn` dengan Amazon Resource Name (ARN) lengkap dari sumber daya yang mengakses peran. Untuk integrasi S3, pastikan untuk menyertakan instans DB ARNs, seperti yang ditunjukkan pada contoh berikut.

  Untuk Linux, macOS, atau Unix:

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                      }
                  }
  	       }
  	     ]
  	   }'
  ```

  Untuk Windows:

  Tambahkan kunci konteks kondisi global ke `assume_role_policy.json`.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                  }
              }
          }
      ]
  }
  ```

------

**Untuk melampirkan kebijakan IAM untuk peran IAM**
+ AWS CLIPerintah berikut melampirkan kebijakan ke peran bernama`rds-s3-integration-role`. Ganti `your-policy-arn` dengan ARN kebijakan yang Anda catat di langkah sebelumnya.  
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws iam attach-role-policy \
  	   --policy-arn your-policy-arn \
  	   --role-name rds-s3-integration-role
  ```

  Untuk Windows:

  ```
  aws iam attach-role-policy ^
  	   --policy-arn your-policy-arn ^
  	   --role-name rds-s3-integration-role
  ```

# Mengaktifkan RDS integrasi SQL Server dengan S3
<a name="Appendix.SQLServer.Options.S3-integration.enabling"></a>

Di bagian berikut, Anda dapat menemukan cara mengaktifkan integrasi Amazon S3 dengan Amazon RDS untuk SQL Server. Untuk bekerja dengan integrasi S3, instans DB Anda harus dikaitkan dengan IAM peran yang sebelumnya Anda buat sebelum Anda menggunakan parameter `S3_INTEGRATION` nama-fitur.

**catatan**  
Untuk menambahkan IAM peran ke instans DB, status instans DB harus **tersedia**.

## Konsol
<a name="Appendix.SQLServer.Options.S3-integration.enabling.console"></a>

**Untuk mengaitkan IAM peran Anda dengan instans DB Anda**

1. Masuk ke Konsol Manajemen AWS dan buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Pilih nama instans DB SQL Server RDS untuk menampilkan detailnya.

1. Pada tab **Konektivitas & keamanan**, di bagian **Kelola IAM peran**, pilih IAM peran yang akan ditambahkan untuk **Tambahkan IAM peran ke instance ini**.

1. Untuk **Fitur**, pilih **S3\$1 INTEGRATION**.  
![\[Tambahkan peran S3_INTEGRATION\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. Pilih **Tambahkan peran**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.enabling.cli"></a>

**Untuk menambahkan IAM peran ke instance RDS for SQL Server DB**
+  AWS CLI Perintah berikut menambahkan IAM peran Anda ke instance RDS untuk SQL Server DB bernama`mydbinstance`.  
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws rds add-role-to-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Untuk Windows:

  ```
  aws rds add-role-to-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Ganti `your-role-arn` dengan peran ARN yang Anda catat di langkah sebelumnya. `S3_INTEGRATION`harus ditentukan untuk `--feature-name` opsi.

# Mentransfer file antara RDS for SQL Server dan Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using"></a>

Anda dapat menggunakan prosedur tersimpan Amazon RDS untuk mengunduh dan mengunggah file antara Amazon S3 dan instans DB RDS Anda. Anda juga dapat menggunakan prosedur tersimpan Amazon RDS untuk menampilkan daftar dan menghapus file di instans RDS.

File yang Anda unduh dari dan unggah ke S3 disimpan di folder `D:\S3`. Ini adalah satu-satunya folder yang dapat Anda gunakan untuk mengakses file Anda. Anda dapat menyusun file menjadi subfolder, yang dibuat untuk Anda saat Anda menyertakan folder tujuan selama pengunduhan.

Beberapa prosedur tersimpan mengharuskan Anda memberikan Amazon Resource Name (ARN) ke bucket dan file S3 Anda. Format untuk ARN Anda adalah `arn:aws:s3:::amzn-s3-demo-bucket/file_name`. Amazon S3 tidak memerlukan nomor akun atau AWS Wilayah di. ARNs

Tugas integrasi S3 berjalan secara berurutan dan berada di antrean yang sama dengan tugas pencadangan dan pemulihan native. Maksimal, Anda hanya dapat memiliki dua tugas yang berlangsung dalam antrean ini kapan saja. Mungkin perlu waktu hingga lima menit hingga tugas mulai diproses.

## Mengunduh file dari bucket Amazon S3 ke instans DB SQL Server
<a name="Appendix.SQLServer.Options.S3-integration.using.download"></a>

Untuk mengunduh file dari bucket S3 ke instans DB RDS for SQL Server, gunakan prosedur tersimpan Amazon RDS `msdb.dbo.rds_download_from_s3` dengan parameter berikut ini.


| Nama parameter | Jenis data | Default | Wajib | Deskripsi | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Wajib  |  ARN S3 dari file yang akan diunduh, misalnya: `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Opsional  |  Jalur file untuk instans RDS. Jika tidak ditentukan, jalur file-nya adalah `D:\S3\<filename in s3>`. RDS mendukung jalur absolut dan jalur relatif. Jika Anda ingin membuat subfolder, sertakan dalam jalur file.  | 
|  `@overwrite_file`  |  INT  |  0  |  Opsional  | Timpa file yang ada:  0 = Jangan timpa 1 = Timpa | 

Anda dapat mengunduh file tanpa ekstensi file dan file dengan ekstensi file berikut: .bcp, .csv, .dat, .fmt, .info, .lst, .tbl, .txt, dan .xml.

**catatan**  
File dengan ekstensi file .ispac dapat diunduh ketika SQL Server Integration Services diaktifkan. Untuk informasi selengkapnya tentang pengaktifan SSIS, lihat [SQL Server Integration Services](Appendix.SQLServer.Options.SSIS.md).  
File dengan ekstensi file berikut dapat diunduh ketika SQL Server Analysis Services diaktifkan: .abf, .asdatabase, .configsettings, .deploymentoptions, .deploymenttargets, dan .xmla. Untuk informasi selengkapnya tentang pengaktifan SSAS, lihat [SQLLayanan Analisis Server](Appendix.SQLServer.Options.SSAS.md).

Contoh berikut menunjukkan prosedur tersimpan untuk mengunduh file dari S3. 

```
exec msdb.dbo.rds_download_from_s3
	    @s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/bulk_data.csv',
	    @rds_file_path='D:\S3\seed_data\data.csv',
	    @overwrite_file=1;
```

Contoh operasi `rds_download_from_s3` membuat folder yang diberi nama `seed_data` di `D:\S3\` jika folder belum ada. Kemudian, contoh tersebut mengunduh file sumber `bulk_data.csv` dari S3 ke file baru bernama `data.csv` di instans DB. Jika file sebelumnya ada, file ini akan ditimpa karena parameter `@overwrite_file` diatur ke `1`.

## Mengunggah file dari instans DB SQL Server ke bucket Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using.upload"></a>

Untuk mengunggah file dari instans DB RDS for SQL Server ke bucket S3, gunakan prosedur tersimpan Amazon RDS `msdb.dbo.rds_upload_to_s3` dengan parameter berikut ini.


| Nama parameter | Jenis data | Default | Wajib | Deskripsi | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Wajib  |  ARN S3 dari file yang akan dibuat di S3, misalnya: `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Wajib  | Jalur file yang akan diunggah ke S3. Jalur absolut dan relatif didukung. | 
|  `@overwrite_file`  |  INT  |  –  |  Opsional  |  Timpa file yang ada:  0 = Jangan timpa 1 = Timpa  | 

Contoh berikut mengunggah file bernama `data.csv` dari lokasi yang ditentukan di `D:\S3\seed_data\` ke file `new_data.csv` dalam bucket S3 yang ditentukan berdasarkan ARN.

```
exec msdb.dbo.rds_upload_to_s3 
		@rds_file_path='D:\S3\seed_data\data.csv',
		@s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/new_data.csv',
		@overwrite_file=1;
```

Jika file sebelumnya ada di S3, file ini akan ditimpa karena parameter @overwrite\$1file diatur ke `1`.

# Daftar file pada instans RDS DB
<a name="Appendix.SQLServer.Options.S3-integration.using.listing-files"></a>

Untuk menampilkan daftar file yang tersedia di instans DB, gunakan prosedur tersimpan dan fungsi. Pertama, jalankan prosedur tersimpan berikut untuk mengumpulkan detail file dari file dalam `D:\S3\`. 

```
exec msdb.dbo.rds_gather_file_details;
```

Prosedur tersimpan menampilkan ID tugas. Seperti tugas lain, prosedur tersimpan ini berjalan secara asinkron. Segera setelah status tugas menjadi `SUCCESS`, Anda dapat menggunakan ID tugas dalam fungsi `rds_fn_list_file_details` untuk menampilkan daftar file dan direktori yang ada di D:\$1S3\$1, seperti yang ditunjukkan berikut ini.

```
SELECT * FROM msdb.dbo.rds_fn_list_file_details(TASK_ID);
```

Fungsi `rds_fn_list_file_details` menampilkan tabel dengan kolom berikut.


| Parameter output | Deskripsi | 
| --- | --- | 
| filepath | Jalur file absolut (misalnya, D:\$1S3\$1mydata.csv) | 
| size\$1in\$1bytes | Ukuran file (dalam byte) | 
| last\$1modified\$1utc | Tanggal dan waktu modifikasi terakhir dalam UTC format | 
| is\$1directory | Opsi yang menunjukkan apakah item merupakan direktori (true/false) | 

# Menghapus file pada instans RDS DB
<a name="Appendix.SQLServer.Options.S3-integration.using.deleting-files"></a>

Untuk menghapus file yang tersedia pada instans DB, gunakan prosedur RDS tersimpan Amazon `msdb.dbo.rds_delete_from_filesystem` dengan parameter berikut. 


| Nama parameter | Jenis data | Default | Wajib | Deskripsi | 
| --- | --- | --- | --- | --- | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Diperlukan  | Jalur file dari file yang akan dihapus. Jalur absolut dan relatif didukung.  | 
|  `@force_delete`  |  INT  | 0 |  Opsional  |  Untuk menghapus direktori, tanda ini harus disertakan dan diatur ke `1`. `1` = menghapus direktori Parameter ini diabaikan jika Anda menghapus file.  | 

Untuk menghapus direktori, `@rds_file_path` harus diakhiri dengan garis miring terbalik (`\`) dan `@force_delete` harus diatur ke `1`.

Contoh berikut menghapus file `D:\S3\delete_me.txt`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\delete_me.txt';
```

Contoh berikut menghapus direktori `D:\S3\example_folder\`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\example_folder\',
    @force_delete=1;
```

# Memantau status tugas transfer file
<a name="Appendix.SQLServer.Options.S3-integration.using.monitortasks"></a>

Untuk melacak status tugas integrasi S3, panggil fungsi `rds_fn_task_status`. Fungsi ini membutuhkan dua parameter. Parameter pertama harus selalu `NULL` karena tidak berlaku pada integrasi S3. Parameter kedua dapat berisi ID tugas.

Untuk melihat daftar semua tugas, tetapkan parameter pertama ke `NULL` dan parameter kedua ke `0`, seperti yang ditunjukkan dalam contoh berikut.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Untuk melihat daftar semua tugas, tetapkan parameter pertama ke `NULL` dan parameter kedua ke ID tugas, seperti yang ditunjukkan dalam contoh berikut.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

Fungsi `rds_fn_task_status` menampilkan informasi berikut.


|  Parameter output  |  Deskripsi  | 
| --- | --- | 
|  `task_id`  |  ID tugas.  | 
|  `task_type`  |  Untuk integrasi S3, tugas dapat memiliki jenis tugas berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `database_name`  | Tidak berlaku untuk tugas integrasi S3. | 
|  `% complete`  |  Progres tugas sebagai persentase.  | 
|  `duration(mins)`  |  Jumlah waktu yang dihabiskan untuk tugas, dalam menit.  | 
|  `lifecycle`  |  Status tugas. Status yang mungkin adalah: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `task_info`  |  Informasi tambahan tentang tugas. Jika terjadi kesalahan selama pemrosesan, kolom ini berisi informasi tentang kesalahan tersebut.   | 
|  `last_updated`  |  Tanggal dan waktu status tugas terakhir diperbarui.   | 
|  `created_at`  |  Tanggal dan waktu tugas dibuat.  | 
|  `S3_object_arn`  |  ARN dari objek S3 tempat file diunduh atau diunggah.  | 
|  `overwrite_S3_backup_file`  |  Tidak berlaku untuk tugas integrasi S3.  | 
|  `KMS_master_key_arn`  |  Tidak berlaku untuk tugas integrasi S3.  | 
|  `filepath`  |  Jalur file pada instans DB RDS.  | 
|  `overwrite_file`  |  Opsi yang menunjukkan apakah file yang sudah ada akan ditimpa.  | 
|  `task_metadata`  |  Tidak berlaku untuk tugas integrasi S3.  | 

# Membatalkan tugas
<a name="Appendix.SQLServer.Options.S3-integration.canceltasks"></a>

Untuk membatalkan tugas integrasi S3, gunakan prosedur tersimpan `msdb.dbo.rds_cancel_task` dengan parameter `task_id`. Tugas hapus dan tugas tampilkan daftar yang sedang berlangsung tidak dapat dibatalkan. Contoh berikut menunjukkan permintaan untuk membatalkan tugas. 

```
exec msdb.dbo.rds_cancel_task @task_id = 1234;
```

Untuk mendapatkan gambaran umum tentang semua tugas dan tugasnyaIDs, gunakan `rds_fn_task_status` fungsi seperti yang dijelaskan dalam[Memantau status tugas transfer file](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md).

## Batasan Multi-AZ untuk integrasi S3
<a name="S3-MAZ"></a>

Pada instans Multi-AZ, file dalam folder `D:\S3` dihapus pada replika siaga setelah failover. Failover dapat direncanakan, misalnya, selama modifikasi instans DB seperti mengubah kelas instans atau meningkatkan versi mesin. Atau, failover bisa jadi tidak terencana, selama pemadaman replika primer.

**catatan**  
Kami tidak menyarankan penggunaan `D:\S3` untuk penyimpanan file. Praktik terbaiknya adalah mengunggah file yang dibuat ke Amazon S3 agar durabel, dan mengunduh file tersebut saat Anda perlu mengimpor data.

Untuk menentukan waktu failover terakhir, Anda dapat menggunakan prosedur tersimpan `msdb.dbo.rds_failover_time`. Untuk informasi selengkapnya, lihat [Menentukan waktu failover terakhir untuk Amazon RDS for SQL Server](Appendix.SQLServer.CommonDBATasks.LastFailover.md).

**Example tidak ada failover terbaru**  
Contoh ini menampilkan output saat tidak ada failover terbaru dalam log kesalahan. Tidak terjadi failover sejak 2020-04-29 23:59:00.01.  
Oleh karena itu, semua file yang diunduh setelah waktu tersebut yang belum dihapus menggunakan prosedur tersimpan `rds_delete_from_filesystem` masih dapat diakses di host saat ini. File yang diunduh sebelum waktu tersebut mungkin juga tersedia.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  null  | 

**Example failover terbaru**  
Contoh ini menampilkan output saat ada failover dalam log kesalahan. Failover terbaru adalah pada 2020-05-05 18:57:51.89.  
Semua file yang diunduh setelah waktu tersebut yang belum dihapus menggunakan prosedur tersimpan `rds_delete_from_filesystem` masih dapat diakses di host saat ini.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  05-05-2020 18:57:51.8900000  | 

# Menonaktifkan RDS integrasi SQL Server dengan S3
<a name="Appendix.SQLServer.Options.S3-integration.disabling"></a>

Berikut ini, Anda dapat menemukan cara menonaktifkan integrasi Amazon S3 dengan Amazon RDS untuk SQL Server. File dalam `D:\S3\` tidak dihapus saat menonaktifkan integrasi S3.

**catatan**  
Untuk menghapus IAM peran dari instans DB, status instans DB harus`available`.

## Konsol
<a name="Appendix.SQLServer.Options.S3-integration.disabling.console"></a>

**Untuk memisahkan IAM peran Anda dari instans DB Anda**

1. Masuk ke Konsol Manajemen AWS dan buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Pilih nama instans DB SQL Server RDS untuk menampilkan detailnya.

1. Pada tab **Konektivitas & keamanan**, di bagian **Kelola IAM peran**, pilih IAM peran yang akan dihapus.

1. Pilih **Hapus**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.disabling.cli"></a>

**Untuk menghapus IAM peran dari instance RDS for SQL Server DB**
+  AWS CLI Perintah berikut menghapus IAM peran dari instance RDS untuk SQL Server DB bernama`mydbinstance`.  
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws rds remove-role-from-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Untuk Windows:

  ```
  aws rds remove-role-from-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Ganti `your-role-arn` dengan IAM peran yang sesuai ARN untuk `--feature-name` opsi tersebut.

# Menggunakan Database Mail di Amazon RDS untuk SQL Server
<a name="SQLServer.DBMail"></a>

Anda dapat menggunakan Database Mail untuk mengirim pesan email ke pengguna dari instans database Amazon RDS di SQL Server Anda. Pesan dapat berisi file dan hasil kueri. Database Mail mencakup komponen berikut:
+ **Objek konfigurasi dan keamanan** – Objek-objek ini membuat profil dan akun, dan disimpan di basis data `msdb`.
+ **Objek pesan** – Objek-objek ini mencakup [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) prosedur tersimpan yang digunakan untuk mengirim pesan, dan struktur data yang menyimpan informasi tentang pesan. Semuanya disimpan di basis data `msdb`.
+ **Pembuatan log dan audit objek** – Database Mail menulis informasi log ke basis data `msdb` dan log peristiwa aplikasi Microsoft Windows.
+ **Database Mail dapat executable** – `DatabaseMail.exe` membaca dari antrean di basis data `msdb` dan mengirim pesan email.

RDSmendukung Database Mail untuk semua versi SQL Server di Web, Standar, dan Edisi Perusahaan.

## Batasan
<a name="SQLServer.DBMail.Limitations"></a>

Batasan berikut berlaku untuk menggunakan Database Mail pada instans SQL Server DB Anda:
+ Database Mail tidak didukung untuk SQL Server Express Edition.
+ Mengubah parameter konfigurasi Database Mail tidak didukung. Untuk melihat nilai preset (default), gunakan prosedur tersimpan [sysmail\$1help\$1configure\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-help-configure-sp-transact-sql).
+ Lampiran file tidak sepenuhnya didukung. Untuk informasi selengkapnya, lihat [Bekerja dengan lampiran file](#SQLServer.DBMail.Files).
+ Ukuran lampiran file maksimum adalah 1 MB.
+ Database Mail memerlukan konfigurasi tambahan pada instans DB Multi-AZ. Untuk informasi selengkapnya, lihat [Pertimbangan untuk deployment multi-AZ](#SQLServer.DBMail.MAZ).
+ Mengkonfigurasi Agen SQL Server untuk mengirim pesan email ke operator yang telah ditentukan tidak didukung.

# Mengaktifkan Database Mail
<a name="SQLServer.DBMail.Enable"></a>

Gunakan proses berikut untuk mengaktifkan Database Mail untuk instans DB Anda:

1. Buat grup parameter baru.

1. Ubah grup parameter untuk mengatur parameter `database mail xps` ke 1.

1. Hubungkan grup parameter baru dengan instans DB.

## Membuat grup parameter untuk Database Mail
<a name="DBMail.CreateParamGroup"></a>

Buat grup parameter untuk parameter `database mail xps` yang sesuai dengan edisi SQL Server dan versi instans DB Anda.

**catatan**  
Anda juga dapat mengubah grup parameter yang ada. Ikuti prosedur di [Mengubah grup parameter untuk Database Mail](#DBMail.ModifyParamGroup).

### Konsol
<a name="DBMail.CreateParamGroup.Console"></a>

Contoh berikut membuat grup parameter untuk Edisi Standar SQL Server 2016.

**Untuk membuat grup parameter**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Grup parameter**.

1. Pilih **Buat grup parameter**.

1. Di panel **Buat grup parameter**, lakukan hal berikut:

   1. Untuk **Rangkaian grup parameter**, pilih **sqlserver-se-13.0**.

   1. Untuk **Nama grup**, masukkan pengidentifikasi grup parameter, seperti **dbmail-sqlserver-se-13**.

   1. Untuk **Deskripsi**, masukkan **Database Mail XPs**.

1. Pilih **Buat**.

### CLI
<a name="DBMail.CreateParamGroup.CLI"></a>

Contoh berikut membuat grup parameter untuk Edisi Standar SQL Server 2016.

**Untuk membuat grup parameter**
+ Gunakan salah satu perintah berikut.  
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "Database Mail XPs"
  ```

  Untuk Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "Database Mail XPs"
  ```

## Mengubah grup parameter untuk Database Mail
<a name="DBMail.ModifyParamGroup"></a>

Ubah parameter `database mail xps` di grup parameter yang sesuai dengan edisi SQL Server dan versi instans DB Anda.

Untuk mengaktifkan Database Mail, atur parameter `database mail xps` ke 1.

### Konsol
<a name="DBMail.ModifyParamGroup.Console"></a>

Contoh berikut akan mengubah grup parameter yang telah Anda buat untuk Edisi Standar SQL Server 2016.

**Untuk mengubah grup parameter**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Grup parameter**.

1. Pilih grup parameter, seperti **dbmail-sqlserver-se-13**.

1. Di bagian **Parameter**, filter daftar parameter untuk **mail**.

1. Pilih **Database Mail xps**.

1. Pilih **Edit parameter**.

1. Masukkan **1**.

1. Pilih **Simpan perubahan**.

### CLI
<a name="DBMail.ModifyParamGroup.CLI"></a>

Contoh berikut akan mengubah grup parameter yang telah Anda buat untuk Edisi Standar SQL Server 2016.

**Untuk mengubah grup parameter**
+ Gunakan salah satu perintah berikut ini.  
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

  Untuk Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

## Kaitkan grup parameter dengan instans DB
<a name="DBMail.AssocParamGroup"></a>

Anda dapat menggunakan Konsol Manajemen AWS atau AWS CLI untuk mengaitkan grup parameter Database Mail dengan instans DB.

### Konsol
<a name="DBMail.AssocParamGroup.Console"></a>

Anda dapat mengaitkan grup parameter Database Mail dengan instans DB baru atau yang sudah ada.
+ Untuk instans DB baru, kaitkan saat Anda meluncurkan instans. Untuk informasi selengkapnya, lihat [Membuat instans DB Amazon RDS](USER_CreateDBInstance.md).
+ Untuk instans DB yang sudah ada, kaitkan dengan mengubah instans. Untuk informasi selengkapnya, lihat [Memodifikasi instans DB Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="DBMail.AssocParamGroup.CLI"></a>

Anda dapat mengaitkan grup parameter Database Mail dengan instans DB baru atau yang sudah ada.

**Untuk membuat instans DB dengan grup parameter Database Mail**
+ Tentukan jenis mesin DB dan versi utama yang sama seperti yang Anda gunakan saat membuat grup parameter.  
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

  Untuk Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

**Untuk mengubah instans DB dan mengaitkan grup parameter Database Mail**
+ Gunakan salah satu perintah berikut ini.  
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --apply-immediately
  ```

  Untuk Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --apply-immediately
  ```

# Mengonfigurasi Database Mail
<a name="SQLServer.DBMail.Configure"></a>

Anda melakukan tugas berikut untuk mengonfigurasikan Database Mail:

1. Buat profil Database Mail.

1. Buat akun Database Mail.

1. Tambahkan akun Database Mail ke profil Database Mail.

1. Tambahkan pengguna ke profil Database Mail.

**catatan**  
Untuk mengonfigurasi Database Mail, pastikan bahwa Anda memiliki izin `execute` pada prosedur yang disimpan dalam basis data `msdb`.

## Membuat profil Database Mail
<a name="SQLServer.DBMail.Configure.Profile"></a>

Untuk membuat profil Database Mail, Anda menggunakan prosedur tersimpan [sysmail\$1add\$1profile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profile-sp-transact-sql). Contoh berikut membuat profil dengan nama `Notifications`.

**Untuk membuat profil**
+ Gunakan pernyataan SQL berikut.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profile_sp  
      @profile_name         = 'Notifications',  
      @description          = 'Profile used for sending outgoing notifications using Amazon SES.';
  GO
  ```

## Membuat akun Database Mail
<a name="SQLServer.DBMail.Configure.Account"></a>

Untuk membuat akun Database Mail, Anda menggunakan prosedur tersimpan [sysmail\$1add\$1account\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-account-sp-transact-sql). Contoh berikut membuat akun dengan nama `SES` di RDS untuk instans DB SQL Server di VPC pribadi, menggunakan Layanan Email Sederhana Amazon.

Menggunakan Amazon SES memerlukan parameter berikut:
+ `@email_address`— Identitas terverifikasi Amazon SES. Untuk informasi selengkapnya, lihat [Identitas terverifikasi di Amazon SES.](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html)
+ `@mailserver_name`— Titik akhir SMTP Amazon SES. Untuk informasi selengkapnya, lihat [Menghubungkan ke titik akhir Amazon SES SMTP](https://docs.aws.amazon.com/ses/latest/dg/smtp-connect.html).
+ `@username`— Nama pengguna SMTP Amazon SES. Untuk informasi selengkapnya, lihat [Mendapatkan kredensial Amazon SES SMTP](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html).

  Jangan gunakan nama AWS Identity and Access Management pengguna.
+ `@password`— Kata sandi Amazon SES SMTP. Untuk informasi selengkapnya, lihat [Mendapatkan kredensial Amazon SES SMTP](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html).

**Untuk membuat akun**
+ Gunakan pernyataan SQL berikut.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_account_sp
      @account_name        = 'SES',
      @description         = 'Mail account for sending outgoing notifications.',
      @email_address       = 'nobody@example.com',
      @display_name        = 'Automated Mailer',
      @mailserver_name     = 'vpce-0a1b2c3d4e5f-01234567.email-smtp.us-west-2.vpce.amazonaws.com',
      @port                = 587,
      @enable_ssl          = 1,
      @username            = 'Smtp_Username',
      @password            = 'Smtp_Password';
  GO
  ```
**catatan**  
Tentukan kredensial selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.

## Menambahkan akun Database Mail ke profil Database Mail
<a name="SQLServer.DBMail.Configure.AddAccount"></a>

Untuk menambahkan akun Database Mail ke profil Database Mail, gunakan prosedur tersimpan [sysmail\$1add\$1profileaccount\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profileaccount-sp-transact-sql). Contoh berikut menambahkan akun `SES` ke profil `Notifications`.

**Menambahkan akun ke profil**
+ Gunakan pernyataan SQL berikut.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
      @profile_name        = 'Notifications',
      @account_name        = 'SES',
      @sequence_number     = 1;
  GO
  ```

## Menambahkan pengguna ke profil Database Mail
<a name="SQLServer.DBMail.Configure.AddUser"></a>

Untuk memberikan izin bagi pengguna utama basis data `msdb` untuk menggunakan profil Database Mail, Anda menggunakan prosedur [sysmail\$1add\$1principalprofile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-principalprofile-sp-transact-sql) tersimpan. *Pengguna utama* adalah entitas yang dapat meminta sumber daya SQL Server. Pengguna utama basis data harus dipetakan ke pengguna autentikasi SQL Server, pengguna Autentikasi Windows, atau grup Autentikasi Windows.

Contoh berikut memberikan akses publik ke profil `Notifications`.

**Untuk menambahkan pengguna ke profil**
+ Gunakan pernyataan SQL berikut.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
      @profile_name       = 'Notifications',  
      @principal_name     = 'public',  
      @is_default         = 1;
  GO
  ```

## Amazon RDS menyimpan prosedur dan fungsi untuk Database Mail
<a name="SQLServer.DBMail.StoredProc"></a>

Microsoft menyediakan [prosedur tersimpan](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/database-mail-stored-procedures-transact-sql) untuk menggunakan Database Mail, seperti membuat, mencantumkan, memperbarui, dan menghapus akun dan profil. Selain itu, RDS menyediakan prosedur dan fungsi tersimpan untuk Database Mail yang ditunjukkan pada tabel berikut.


| Prosedur/Fungsi | Deskripsi | 
| --- | --- | 
| rds\$1fn\$1sysmail\$1allitems | Menampilkan pesan terkirim, termasuk yang dikirim oleh pengguna lain. | 
| rds\$1fn\$1sysmail\$1event\$1log | Menampilkan acara, termasuk acara untuk pesan yang dikirimkan oleh pengguna lain. | 
| rds\$1fn\$1sysmail\$1mailattachments | Menampilkan lampiran terkirim, termasuk yang dikirim oleh pengguna lain. | 
| rds\$1sysmail\$1control | Memulai dan menghentikan antrian email (DatabaseMailproses.exe). | 
| rds\$1sysmail\$1delete\$1mailitems\$1sp | Menghapus pesan email yang dikirim oleh semua pengguna dari tabel internal Database Mail. | 

# Mengirim pesan email menggunakan Database Mail
<a name="SQLServer.DBMail.Send"></a>

Anda menggunakan prosedur [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) tersimpan untuk mengirim pesan email menggunakan Database Mail.

## Penggunaan
<a name="SQLServer.DBMail.Send.Usage"></a>

```
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile_name',
@recipients = 'recipient1@example.com[; recipient2; ... recipientn]',
@subject = 'subject',
@body = 'message_body',
[@body_format = 'HTML'],
[@file_attachments = 'file_path1; file_path2; ... file_pathn'],
[@query = 'SQL_query'],
[@attach_query_result_as_file = 0|1]';
```

Parameter berikut diperlukan:
+ `@profile_name` – Nama profil Database Mail yang akan digunakan untuk mengirim pesan.
+ `@recipients` – Daftar alamat email tujuan pengiriman pesan yang dipisahkan titik koma.
+ `@subject` – Subjek pesan.
+ `@body` – Konten pesan. Anda juga dapat menggunakan variabel yang dinyatakan sebagai isi.

Parameter berikut ini bersifat opsional:
+ `@body_format` – Parameter ini digunakan dengan variabel yang dinyatakan untuk mengirim email dalam format HTML.
+ `@file_attachments` – Daftar lampiran pesan yang disusun dengan titik koma. Path file harus berupa path absolut.
+ `@query` – Kueri SQL untuk dijalankan. Hasil kueri dapat dilampirkan sebagai file atau disertakan dalam konten pesan.
+ `@attach_query_result_as_file` – Apakah melampirkan hasil kueri sebagai file. Atur ke 0 untuk tidak, 1 untuk ya. Default-nya adalah 0.

## Contoh
<a name="SQLServer.DBMail.Send.Examples"></a>

Contoh-contoh berikut ini mendemonstrasikan cara mengirim pesan email.

**Example mengirimkan pesan ke satu penerima**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Automated DBMail message - 1',
     @body               = 'Database Mail configuration was successful.';
GO
```

**Example mengirimkan pesan ke beberapa penerima**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'recipient1@example.com;recipient2@example.com',
     @subject            = 'Automated DBMail message - 2',
     @body               = 'This is a message.';
GO
```

**Example mengirimkan hasil kueri SQL sebagai lampiran file**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test SQL query',
     @body               = 'This is a SQL query test.',
     @query              = 'SELECT * FROM abc.dbo.test',
     @attach_query_result_as_file = 1;
GO
```

**Example mengirimkan pesan dalam format HTML**  

```
USE msdb
GO

DECLARE @HTML_Body as NVARCHAR(500) = 'Hi, <h4> Heading </h4> </br> See the report. <b> Regards </b>';

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test HTML message',
     @body               = @HTML_Body,
     @body_format        = 'HTML';
GO
```

**Example mengirimkan pesan menggunakan pemicu saat peristiwa tertentu terjadi di basis data**  

```
USE AdventureWorks2017
GO
IF OBJECT_ID ('Production.iProductNotification', 'TR') IS NOT NULL
DROP TRIGGER Purchasing.iProductNotification
GO

CREATE TRIGGER iProductNotification ON Production.Product
   FOR INSERT
   AS
   DECLARE @ProductInformation nvarchar(255);
   SELECT
   @ProductInformation = 'A new product, ' + Name + ', is now available for $' + CAST(StandardCost AS nvarchar(20)) + '!'
   FROM INSERTED i;

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'New product information',
     @body               = @ProductInformation;
GO
```

# Melihat pesan, log, dan lampiran
<a name="SQLServer.DBMail.View"></a>

Anda menggunakan prosedur RDS tersimpan untuk melihat pesan, log peristiwa, dan lampiran.

**Untuk melihat semua pesan email**
+ Gunakan SQL kueri berikut.

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_allitems(); --WHERE sent_status='sent' or 'failed' or 'unsent'
  ```

**Untuk melihat semua log peristiwa email**
+ Gunakan SQL kueri berikut.

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_event_log();
  ```

**Untuk melihat semua lampiran email**
+ Gunakan SQL kueri berikut.

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_mailattachments();
  ```

# Menghapus pesan
<a name="SQLServer.DBMail.Delete"></a>

Anda menggunakan prosedur `rds_sysmail_delete_mailitems_sp` yang disimpan untuk menghapus pesan.

**catatan**  
RDSsecara otomatis menghapus item tabel email ketika data DBMail riwayat mencapai ukuran 1 GB, dengan periode retensi minimal 24 jam.  
Jika Anda ingin menyimpan mail untuk periode yang lebih lama, Anda dapat mengarsipkannya. Untuk selengkapnya, lihat [Membuat pekerjaan Agen SQL Server untuk mengarsipkan pesan Mail Database dan log peristiwa](https://docs.microsoft.com/en-us/sql/relational-databases/database-mail/create-a-sql-server-agent-job-to-archive-database-mail-messages-and-event-logs) di dokumentasi Microsoft.

**Untuk menghapus semua pesan email**
+ Gunakan SQL pernyataan berikut.

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_before = @GETDATE;
  GO
  ```

**Untuk menghapus semua pesan email dengan status tertentu**
+ Gunakan SQL pernyataan berikut untuk menghapus semua pesan yang gagal.

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_status = 'failed';
  GO
  ```

# Memulai dan menghentikan antrian email
<a name="SQLServer.DBMail.StartStop"></a>

Gunakan petunjuk berikut untuk memulai dan menghentikan antrian email DB:

**Topics**
+ [Memulai antrean email](#SQLServer.DBMail.Start)
+ [Menghentikan antrean email](#SQLServer.DBMail.Stop)

## Memulai antrean email
<a name="SQLServer.DBMail.Start"></a>

Anda menggunakan prosedur `rds_sysmail_control` yang disimpan untuk memulai proses Database Mail.

**catatan**  
Mengaktifkan Database Mail secara otomatis memulai antrean email.

**Untuk memulai antrean email**
+ Gunakan SQL pernyataan berikut.

  ```
  EXECUTE msdb.dbo.rds_sysmail_control start;
  GO
  ```

## Menghentikan antrean email
<a name="SQLServer.DBMail.Stop"></a>

Anda menggunakan prosedur `rds_sysmail_control` yang disimpan untuk memulai menghentikan proses Database Mail.

**Untuk menghentikan antrean email**
+ Gunakan SQL pernyataan berikut.

  ```
  EXECUTE msdb.dbo.rds_sysmail_control stop;
  GO
  ```

## Bekerja dengan lampiran file
<a name="SQLServer.DBMail.Files"></a>

Ekstensi lampiran file berikut tidak didukung dalam pesan Database Mail dari RDS SQL Server: .ade, .adp, .apk, .appx, .appxbundle, .bat, .bak, .cab, .chm, .cmd, .com, .cpl, .dll, .dmg, .exe, .hta, .inf1, .ins, .isp, .iso, .jar, .job, .job, .js, .jse, .ldf, .lib, .lnk, .mde, .mdf, .msc, .msi, .msix, .msixbundle, .msp, .mst, .nsh, .pif, .ps, .ps1, .psc1, .reg, .rgs, .scr, .sct, .shb, .shb, .shb s, .svg, .sys, .u3p, .vb, .vbe, .vbs, .vbscript, .vxd, .ws, .wsc, .wsf, dan .wsh.

Database Mail menggunakan konteks keamanan Microsoft Windows dari pengguna saat ini untuk mengontrol akses ke file. Pengguna yang masuk dengan Otentikasi SQL Server tidak dapat melampirkan file menggunakan `@file_attachments` parameter dengan prosedur yang `sp_send_dbmail` disimpan. Windows tidak mengizinkan SQL Server untuk menyediakan kredensil dari komputer jarak jauh ke komputer jarak jauh lainnya. Oleh karena itu, Database Mail tidak dapat melampirkan file dari jaringan berbagi ketika perintah dijalankan dari komputer selain komputer yang menjalankan SQL Server.

Namun, Anda dapat menggunakan pekerjaan Agen SQL Server untuk melampirkan file. Untuk informasi selengkapnya tentang Agen SQL Server, lihat [Menggunakan Agen SQL Server untuk Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md) dan [Agen SQL Server](https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent) di dokumentasi Microsoft.

## Pertimbangan untuk deployment multi-AZ
<a name="SQLServer.DBMail.MAZ"></a>

Ketika Anda mengonfigurasikan Database Mail di instans DB Multi-AZ DB, konfigurasi tidak secara otomatis diperbanyak ke sekunder. Kami merekomendasikan untuk mengonversi instans Multi-AZ ke instans AZ Tunggal, mengonfigurasi Database Mail, kemudian mengonversikan kembali instans DB ke Multi-AZ. Kemudian, kedua node primer dan sekunder memiliki konfigurasi Database Mail.

Jika Anda membuat replika baca dari instans Multi-AZ Anda yang memiliki Database Mail dikonfigurasi, replika mewarisi konfigurasi, tetapi tanpa kata sandi ke server. SMTP Perbarui akun Database Mail dengan kata sandi.

## Menghapus batasan SMTP (port 25)
<a name="SQLServer.DBMail.SMTP"></a>

Secara default, AWS memblokir lalu lintas keluar pada SMTP (port 25) RDS untuk instance SQL Server DB. Hal ini dilakukan untuk mencegah spam berdasarkan kebijakan pemilik elastic network interface. Anda dapat menghapus batasan ini jika diperlukan. Untuk informasi selengkapnya, lihat [Bagaimana cara menghapus pembatasan pada port 25 dari EC2 instans Amazon atau fungsi Lambda saya](https://repost.aws/knowledge-center/ec2-port-25-throttle)? . 

# Amazon RDS for SQL Server mendukung penyimpanan instans lokal untuk basis data tempdb
<a name="SQLServer.InstanceStore"></a>

*Penyimpanan instans* menyediakan penyimpanan tingkat blok sementara untuk instans DB Anda. Penyimpanan ini terletak pada disk yang secara fisik terpasang pada komputer host. Disk ini memiliki penyimpanan instans Non-Volatile Memory Express (NVMe) yang didasarkan pada solid-state drive (SSD). Penyimpanan tersebut dioptimalkan untuk latensi rendah, performa I/O acak sangat tinggi, dan throughput baca berurutan.

Dengan menempatkan file data `tempdb` dan file log `tempdb` di penyimpanan instans, Anda dapat mencapai latensi baca dan tulis yang lebih rendah dibandingkan dengan penyimpanan standar berdasarkan Amazon EBS.

**catatan**  
File log dari file dan basis data untuk basis data SQL Server tidak ditempatkan di penyimpanan instans.

## Mengaktifkan penyimpanan instans
<a name="SQLServer.InstanceStore.Enable"></a>

Ketika RDS menyediakan instans DB dengan salah satu kelas instans berikut, basis data `tempdb` secara otomatis ditempatkan ke penyimpanan instans:
+ db.m5d
+ db.r5d
+ db.x2iedn

Untuk mengaktifkan penyimpanan instans, lakukan salah satu hal berikut:
+ Buat instans DB SQL Server menggunakan salah satu dari jenis instans ini. Untuk informasi selengkapnya, lihat [Membuat instans DB Amazon RDS](USER_CreateDBInstance.md).
+ Mengubah instans DB SQL Server yang ada untuk menggunakan salah satunya. Untuk informasi selengkapnya, lihat [Memodifikasi instans DB Amazon RDS](Overview.DBInstance.Modifying.md).

Penyimpanan instans tersedia di semua Wilayah AWS di mana satu atau beberapa jenis instans ini didukung. Untuk informasi selengkapnya tentang daftar kelas instans `db.m5d` dan `db.r5d`, lihat [ DB](Concepts.DBInstanceClass.md). Untuk informasi selengkapnya tentang kelas instans yang didukung oleh Amazon RDS for SQL Server, lihat [Dukungan kelas instans DB untuk Microsoft SQL Server](SQLServer.Concepts.General.InstanceClasses.md).

## Pertimbangan lokasi dan ukuran file
<a name="SQLServer.InstanceStore.Files"></a>

Pada instans tanpa penyimpanan instans, RDS menyimpan data `tempdb` dan file log di direktori `D:\rdsdbdata\DATA`. Kedua file mulai dari 8 MB secara default.

Pada instans dengan penyimpanan instans, RDS menyimpan data `tempdb` dan file log di direktori `T:\rdsdbdata\DATA`.

Saat `tempdb` hanya memiliki satu file data (`tempdb.mdf`) dan satu file log (`templog.ldf`), `templog.ldf` dimulai pada 8 MB secara default dan `tempdb.mdf` dimulai pada 80% atau lebih dari kapasitas penyimpanan instans. Dua puluh persen dari kapasitas penyimpanan atau 200 GB, mana pun yang kurang, tetap bebas untuk memulai. Beberapa file data `tempdb` membagi ruang disk 80% secara merata, sementara file log selalu memiliki ukuran awal 8-MB.

Misalnya, jika Anda mengubah kelas instans DB Anda dari `db.m5.2xlarge` ke `db.m5d.2xlarge`, ukuran file data `tempdb` meningkat dari 8 MB masing-masing hingga 234 GB secara total.

**catatan**  
Selain data `tempdb` dan file log di penyimpanan instans (`T:\rdsdbdata\DATA`), Anda masih dapat membuat data dan file log `tempdb` ekstra pada volume data (`D:\rdsdbdata\DATA`). File-file tersebut selalu memiliki ukuran awal 8 MB.

## Pertimbangan backup
<a name="SQLServer.InstanceStore.Backups"></a>

Anda mungkin perlu untuk mempertahankan backup untuk waktu yang lama, menimbulkan biaya dari waktu ke waktu. Blok data dan log `tempdb` dapat berubah sangat sering tergantung pada beban kerja. Hal ini dapat sangat meningkatkan ukuran snapshot DB.

Saat `tempdb` ada pada penyimpanan instans, snapshot tidak mencakup file sementara. Ini berarti bahwa ukuran snapshot lebih kecil dan mengkonsumsi lebih sedikit alokasi backup gratis dibandingkan dengan penyimpanan EBS saja.

## Kesalahan disk penuh
<a name="SQLServer.InstanceStore.DiskFull"></a>

Jika Anda menggunakan semua ruang yang tersedia di penyimpanan instans, Anda mungkin menerima kesalahan seperti berikut:
+ Log transaksi untuk basis data 'tempdb' penuh karena 'ACTIVE\$1TRANSACTION'.
+ Tidak dapat mengalokasikan ruang untuk objek 'dbo.SORT sementara menjalankan penyimpanan: 140738941419520' dalam basis data 'tempdb' karena filegroup 'PRIMARY' penuh. Membuat ruang disk dengan menghapus file yang tidak diperlukan, membuang objek dalam filegroup, menambahkan file tambahan ke filegroup, atau menyalakan autogrowth untuk file yang ada di filegroup.

Anda dapat melakukan satu atau beberapa hal berikut ketika penyimpanan instans penuh:
+ Menyesuaikan beban kerja Anda atau cara Anda menggunakan `tempdb`.
+ Menaikkan skala untuk menggunakan kelas instans DB dengan penyimpanan NVMe lebih banyak.
+ Berhenti menggunakan penyimpanan instans, dan menggunakan kelas instans dengan hanya penyimpanan EBS.
+ Gunakan mode campuran dengan menambahkan data sekunder atau file log untuk `tempdb` pada volume EBS.

## Menghapus penyimpanan instans
<a name="SQLServer.InstanceStore.Disable"></a>

Untuk menghapus penyimpanan instans, ubah instans DB SQL Server Anda untuk menggunakan jenis instans yang tidak mendukung penyimpanan instans, seperti db.m5, db.r5, atau db.x1e.

**catatan**  
Ketika Anda menghapus penyimpanan instans, file-file sementara dipindahkan ke direktori `D:\rdsdbdata\DATA` dan dikurangi ukurannya ke 8 MB.

# Menggunakan acara diperpanjang dengan Amazon RDS untuk Microsoft SQL Server
<a name="SQLServer.ExtendedEvents"></a>

Anda dapat menggunakan peristiwa yang diperpanjang di Microsoft SQL Server untuk menangkap informasi debugging dan pemecahan masalah untuk Amazon RDS untuk Server. SQL Peristiwa yang diperluas menggantikan SQL Trace dan Server Profiler, yang telah tidak digunakan lagi oleh Microsoft. Peristiwa diperpanjang mirip dengan jejak profiler tetapi dengan kontrol yang lebih rinci pada peristiwa yang dilacak. Acara yang diperpanjang didukung untuk SQL Server versi 2016 dan yang lebih baru di AmazonRDS. Untuk informasi selengkapnya, lihat [Extended events overview](https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/extended-events) di dokumentasi Microsoft.

Peristiwa yang diperpanjang diaktifkan secara otomatis untuk pengguna dengan hak istimewa pengguna utama di Amazon RDS untuk SQL Server.

**Topics**
+ [Batasan dan rekomendasi](#SQLServer.ExtendedEvents.Limits)
+ [Mengkonfigurasi event yang diperpanjang RDS untuk Server SQL](#SQLServer.ExtendedEvents.Config)
+ [Pertimbangan untuk deployment multi-AZ](#SQLServer.ExtendedEvents.MAZ)
+ [Melakukan kueri file peristiwa diperpanjang](#SQLServer.ExtendedEvents.Querying)

## Batasan dan rekomendasi
<a name="SQLServer.ExtendedEvents.Limits"></a>

Saat menggunakan event yang diperpanjang di RDS for SQL Server, batasan berikut berlaku:
+ Peristiwa diperpanjang didukung hanya untuk Edisi Perusahaan dan Standar.
+ Anda tidak dapat mengubah sesi peristiwa diperpanjang default.
+ Pastikan untuk mengatur mode partisi memori sesi ke `NONE`.
+ Mode retensi peristiwa sesi dapat berupa `ALLOW_SINGLE_EVENT_LOSS` atau `ALLOW_MULTIPLE_EVENT_LOSS`.
+ Penelusuran Acara untuk target Windows (ETW) tidak didukung.
+ Pastikan bahwa target file berada di direktori `D:\rdsdbdata\log`.
+ Untuk target pencocokan pasangan, atur properti `respond_to_memory_pressure` ke `1`.
+ Memori target ring buffer tidak boleh lebih besar dari 4 MB.
+ Tindakan berikut tidak didukung:
  + `debug_break`
  + `create_dump_all_threads`
  + `create_dump_single_threads`
+ Peristiwa `rpc_completed` didukung pada versi berikut dan yang lebih baru: 15.0.4083.2, 14.0.3370.1, 13.0.5865.1, 12.0.6433.1, 11.0.7507.2.

## Mengkonfigurasi event yang diperpanjang RDS untuk Server SQL
<a name="SQLServer.ExtendedEvents.Config"></a>

On RDS for SQL Server, Anda dapat mengonfigurasi nilai parameter tertentu dari sesi acara yang diperpanjang. Tabel berikut menjelaskan parameter yang dapat dikonfigurasi ini.


| Nama parameter | Deskripsi | RDSnilai default | Nilai minimum | Nilai maksimum | 
| --- | --- | --- | --- | --- | 
| xe\$1session\$1max\$1memory | Tentukan jumlah maksimum memori untuk dialokasikan untuk sesi untuk buffering peristiwa. Nilai ini sesuai dengan pengaturan max\$1memory sesi peristiwa. | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1event\$1size | Menentukan ukuran memori maksimum yang diperbolehkan untuk peristiwa besar. Nilai ini sesuai dengan pengaturan max\$1event\$1size sesi peristiwa. | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1dispatch\$1latency | Tentukan jumlah waktu peristiwa di-buffer dalam memori sebelum dikirim ke target sesi peristiwa diperpanjang. Nilai ini sesuai dengan pengaturan max\$1dispatch\$1latency sesi peristiwa. | 30 detik | 1 detik | 30 detik | 
| xe\$1file\$1target\$1size | Tentukan ukuran maksimum target file. Nilai ini sesuai dengan pengaturan max\$1file\$1size target file. | 100 MB | 10 MB | 1 GB | 
| xe\$1file\$1retention | Menentukan waktu retensi dalam hari untuk file yang dihasilkan oleh target file sesi peristiwa. | 7 hari | 0 hari | 7 hari | 

**catatan**  
Pengaturan `xe_file_retention` ke nol menyebabkan file.xel dihapus secara otomatis setelah kunci pada file-file ini dirilis oleh SQL Server. Kunci dilepaskan setiap kali file .xel mencapai batas ukuran yang ditetapkan dalam `xe_file_target_size`.

Anda dapat menggunakan prosedur tersimpan `rdsadmin.dbo.rds_show_configuration` untuk menunjukkan nilai-nilai parameter saat ini. Misalnya, gunakan SQL pernyataan berikut untuk melihat pengaturan saat ini`xe_session_max_memory`.

```
exec rdsadmin.dbo.rds_show_configuration 'xe_session_max_memory'
```

Anda dapat menggunakan prosedur `rdsadmin.dbo.rds_set_configuration` yang disimpan untuk memodifikasinya. Misalnya, gunakan SQL pernyataan berikut untuk mengatur `xe_session_max_memory` ke 4 MB.

```
exec rdsadmin.dbo.rds_set_configuration 'xe_session_max_memory', 4
```

## Pertimbangan untuk deployment multi-AZ
<a name="SQLServer.ExtendedEvents.MAZ"></a>

Ketika Anda membuat sesi peristiwa diperpanjang pada instans DB primer, sesi tersebut tidak menyebar ke replika siaga. Anda dapat melakukan failover dan membuat sesi peristiwa diperpanjang pada instans DB primer yang baru. Atau Anda dapat menghapus dan kemudian menambahkan kembali konfigurasi multi-AZ untuk menyebarkan sesi peristiwa diperpanjang ke replika siaga. RDSmenghentikan semua sesi acara perpanjangan nondefault pada replika siaga, sehingga sesi ini tidak menggunakan sumber daya saat siaga. Karena ini, setelah replika siaga menjadi instans DB primer, pastikan untuk secara manual memulai sesi peristiwa diperpanjang pada instans primer baru.

**catatan**  
Pendekatan ini berlaku untuk Always On Availability Group dan Database Mirroring.

Anda juga dapat menggunakan pekerjaan Agen SQL Server untuk melacak replika siaga dan memulai sesi jika siaga menjadi yang utama. Misalnya, gunakan kueri berikut dalam langkah pekerjaan Agen SQL Server Anda untuk memulai ulang sesi acara pada instans DB utama.

```
BEGIN
    IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE'
    AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE'
    AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1)
    )
    BEGIN
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1')
            ALTER EVENT SESSION xe1 ON SERVER STATE=START
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2')
            ALTER EVENT SESSION xe2 ON SERVER STATE=START
    END
END
```

Kueri ini memulai ulang sesi peristiwa `xe1` dan `xe2` pada instans DB primer jika sesi ini berada dalam keadaan berhenti. Anda juga dapat menambahkan jadwal dengan interval yang nyaman untuk kueri ini.

## Melakukan kueri file peristiwa diperpanjang
<a name="SQLServer.ExtendedEvents.Querying"></a>

Anda dapat menggunakan SQL Server Management Studio atau `sys.fn_xe_file_target_read_file` fungsi untuk melihat data dari peristiwa yang diperluas yang menggunakan target file. Untuk informasi selengkapnya tentang fungsi ini, lihat [sys.fn\$1xe\$1file\$1target\$1read\$1file (Transact-) dalam dokumentasi](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-xe-file-target-read-file-transact-sql) Microsoft. SQL

Target file acara yang diperluas hanya dapat menulis file ke `D:\rdsdbdata\log` direktori RDS untuk SQL Server.

Sebagai contoh, gunakan SQL kueri berikut untuk mencantumkan konten semua file sesi acara diperpanjang yang namanya dimulai`xe`.

```
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);
```

# Akses ke cadangan log transaksi dengan RDS for SQL Server
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess"></a>

Dengan akses ke cadangan log transaksi untuk RDS for SQL Server, Anda dapat menampilkan daftar file cadangan log transaksi untuk basis data dan menyalinnya ke bucket Amazon S3 target. Dengan menyalin cadangan log transaksi di bucket Amazon S3, Anda dapat menggunakannya dalam kombinasi dengan cadangan basis data lengkap dan diferensial untuk melakukan pemulihan basis data titik waktu. Anda menggunakan prosedur tersimpan RDS untuk mengatur akses ke cadangan log transaksi, menampilkan daftar cadangan log transaksi yang tersedia, dan menyalinnya ke bucket Amazon S3 Anda.

Akses ke cadangan log transaksi memberikan kemampuan dan manfaat berikut:
+ Tampilkan daftar dan lihat metadata cadangan log transaksi yang tersedia untuk basis data pada instans DB RDS for SQL Server.
+ Salin cadangan log transaksi yang tersedia dari RDS for SQL Server ke bucket Amazon S3 target.
+ Lakukan point-in-time pemulihan database tanpa perlu mengembalikan seluruh instance DB. Untuk informasi selengkapnya tentang memulihkan instans DB ke suatu titik waktu, lihat [Memulihkan instans DB ke waktu yang ditentukan untuk Amazon RDS](USER_PIT.md).

## Ketersediaan dan dukungan
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Availability"></a>

Akses ke cadangan log transaksi didukung di semua AWS Wilayah. Akses ke cadangan log transaksi tersedia untuk semua edisi dan versi Microsoft SQL Server yang didukung di Amazon RDS. 

## Persyaratan
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements"></a>

Persyaratan berikut harus dipenuhi sebelum mengaktifkan akses ke cadangan log transaksi: 
+  Pencadangan otomatis harus diaktifkan pada instans DB dan retensi cadangan harus diatur ke nilai satu hari atau lebih. Untuk informasi selengkapnya tentang mengaktifkan pencadangan otomatis dan mengonfigurasi kebijakan retensi, lihat [Mengaktifkan pencadangan otomatis](USER_WorkingWithAutomatedBackups.Enabling.md). 
+ Bucket Amazon S3 harus ada di akun dan Wilayah yang sama dengan instans DB sumber. Sebelum mengaktifkan akses ke cadangan log transaksi, pilih bucket Amazon S3 yang sudah ada atau [buat bucket baru](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html) yang akan digunakan untuk file cadangan log transaksi Anda.
+ Kebijakan izin bucket Amazon S3 harus dikonfigurasi sebagai berikut untuk memungkinkan Amazon RDS menyalin file log transaksi ke dalamnya:

  1. Atur properti kepemilikan akun objek pada bucket ke **Pemilik Bucket Pilihan**.

  1. Tambahkan kebijakan berikut. Tidak akan ada kebijakan secara default, jadi gunakan Daftar Kontrol Akses (ACL) bucket untuk mengedit kebijakan bucket dan menambahkannya.

  

  Contoh berikut menggunakan ARN untuk menentukan sumber daya. Sebaiknya gunakan kunci konteks kondisi global `SourceArn` dan `SourceAccount` dalam relasi kepercayaan berbasis sumber daya untuk membatasi izin layanan ke sumber daya tertentu. Untuk informasi selengkapnya tentang bekerja dengan ARNs, lihat [nama sumber daya Amazon (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) dan[Nama Sumber Daya Amazon (ARNs) di Amazon RDS](USER_Tagging.ARN.md).

    
**Example kebijakan izin Amazon S3 untuk akses ke cadangan log transaksi**  

------
#### [ JSON ]

****  

  ```
      {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Only allow writes to my bucket with bucket owner full control",
              "Effect": "Allow",
              "Principal": {
                  "Service": "backups.rds.amazonaws.com"
              },
              "Action": "s3:PutObject",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/{customer_path}/*",
              "Condition": {
                  "StringEquals": {
                      "s3:x-amz-acl": "bucket-owner-full-control",
                      "aws:sourceAccount": "{customer_account}",
                      "aws:sourceArn": "{db_instance_arn}"
                  }
              }
          }
      ]
  }
  ```

------
+ Peran AWS Identity and Access Management (IAM) untuk mengakses bucket Amazon S3. Jika sudah memiliki peran IAM, Anda dapat menggunakannya. Anda dapat memilih untuk dibuatkan peran IAM baru ketika menambahkan opsi `SQLSERVER_BACKUP_RESTORE` dengan menggunakan Konsol Manajemen AWS. Alternatifnya, Anda dapat membuatnya secara manual. Untuk informasi selengkapnya tentang membuat dan mengonfigurasi peran IAM dengan `SQLSERVER_BACKUP_RESTORE`, lihat [Membuat peran IAM secara manual untuk pencadangan dan pemulihan native](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM).
+ Opsi `SQLSERVER_BACKUP_RESTORE` harus ditambahkan ke grup opsi pada instans DB Anda. Untuk informasi selengkapnya tentang menambahkan opsi `SQLSERVER_BACKUP_RESTORE`, lihat [Dukungan untuk pencadangan dan pemulihan native di SQL Server](Appendix.SQLServer.Options.BackupRestore.md).
**catatan**  
Jika instans DB Anda mengaktifkan enkripsi penyimpanan, tindakan dan kunci AWS KMS (KMS) harus disediakan dalam peran IAM yang disediakan dalam grup opsi pencadangan dan pemulihan asli.

  Secara opsional, jika Anda bermaksud menggunakan prosedur tersimpan `rds_restore_log` untuk melakukan pemulihan basis data titik waktu, sebaiknya gunakan jalur Amazon S3 yang sama untuk grup opsi pencadangan dan pemulihan native dan akses ke cadangan log transaksi. Metode ini memastikan bahwa ketika Amazon RDS mengambil peran dari grup opsi untuk melakukan fungsi pemulihan log, layanan ini memiliki akses untuk mengambil cadangan log transaksi dari jalur Amazon S3 yang sama.
+ Jika instans DB dienkripsi, terlepas dari jenis enkripsi (kunci AWS terkelola atau kunci yang dikelola pelanggan), Anda harus memberikan kunci KMS yang dikelola pelanggan dalam peran IAM dan dalam prosedur yang disimpan. `rds_tlog_backup_copy_to_S3` 

## Batasan dan rekomendasi
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Limitations"></a>

Akses ke cadangan log transaksi memiliki batasan dan rekomendasi sebagai berikut:
+  Anda dapat menampilkan daftar dan menyalin hingga tujuh hari terakhir cadangan log transaksi untuk instans DB apa pun yang memiliki retensi cadangan yang dikonfigurasi antara satu hingga 35 hari. 
+  Bucket Amazon S3 yang digunakan untuk akses ke cadangan log transaksi harus ada di akun dan Wilayah yang sama dengan instans DB sumber. Penyalinan lintas akun dan lintas Wilayah tidak didukung. 
+  Hanya satu bucket Amazon S3 yang dapat dikonfigurasi sebagai target untuk menyalin cadangan log transaksi. Anda dapat memilih bucket Amazon S3 target baru dengan prosedur tersimpan `rds_tlog_copy_setup`. Untuk informasi selengkapnya tentang memilih bucket Amazon S3 baru, lihat [Mengatur akses ke cadangan log transaksi](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md).
+  Anda tidak dapat menentukan kunci KMS saat menggunakan prosedur tersimpan `rds_tlog_backup_copy_to_S3` jika instans RDS Anda tidak diaktifkan untuk enkripsi penyimpanan. 
+  Penyalinan multi-akun tidak didukung. Peran IAM yang digunakan untuk menyalin hanya akan mengizinkan akses tulis ke bucket Amazon S3 dalam akun pemilik instans DB. 
+  Hanya dua tugas konkuren dari jenis apa pun dapat dijalankan pada instans DB RDS for SQL Server. 
+  Hanya satu tugas penyalinan yang dapat dijalankan untuk satu basis data pada waktu tertentu. Jika Anda ingin menyalin cadangan log transaksi untuk beberapa basis data pada instans DB, gunakan tugas penyalinan terpisah untuk setiap basis data. 
+  Jika Anda menyalin cadangan log transaksi yang sudah ada dengan nama yang sama di bucket Amazon S3, cadangan log transaksi yang ada akan ditimpa. 
+  Anda hanya dapat menjalankan prosedur tersimpan yang disediakan dengan akses ke cadangan log transaksi pada instans DB primer. Anda tidak dapat menjalankan prosedur tersimpan ini pada replika baca RDS for SQL Server atau pada instans sekunder dari klaster DB Multi-AZ. 
+  Jika DB RDS for SQL Server instans di-boot ulang saat prosedur tersimpan `rds_tlog_backup_copy_to_S3` sedang berjalan, tugas ini akan secara otomatis dimulai ulang dari awal ketika instans DB kembali online. Cadangan log transaksi apa pun yang telah disalin ke bucket Amazon S3 saat tugas berjalan sebelum boot ulang akan ditimpa. 
+ Basis data sistem Microsoft SQL Server dan basis data `RDSAdmin` tidak dapat dikonfigurasi untuk akses ke cadangan log transaksi.
+  Penyalinan ke bucket yang dienkripsi oleh SSE-KMS tidak didukung. 

# Mengatur akses ke cadangan log transaksi
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling"></a>

Untuk mengatur akses ke cadangan log transaksi, lengkapi daftar persyaratan di bagian [Persyaratan](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements), lalu jalankan prosedur tersimpan `rds_tlog_copy_setup`. Prosedur ini akan mengaktifkan akses ke fitur cadangan log transaksi di tingkat instans DB. Anda tidak perlu menjalankannya untuk setiap basis data individual pada instans DB. 

**penting**  
Pengguna basis data harus diberi peran `db_owner` dalam SQL Server pada setiap basis data untuk mengonfigurasi dan menggunakan akses ke fitur cadangan log transaksi.

**Example penggunaan:**  

```
exec msdb.dbo.rds_tlog_copy_setup
@target_s3_arn='arn:aws:s3:::amzn-s3-demo-bucket/myfolder';
```

Parameter berikut diperlukan:
+ `@target_s3_arn` – ARN bucket Amazon S3 target untuk menyalin file cadangan log transaksi.

**Example mengatur bucket target Amazon S3:**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket/mytestdb1';
```

Untuk memvalidasi konfigurasi, panggil prosedur tersimpan `rds_show_configuration`.

**Example memvalidasi konfigurasi:**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

Untuk mengubah akses ke cadangan log transaksi agar mengarah ke bucket Amazon S3 yang berbeda, Anda dapat melihat nilai bucket Amazon S3 saat ini dan menjalankan kembali prosedur tersimpan `rds_tlog_copy_setup` menggunakan nilai baru untuk `@target_s3_arn`.

**Example melihat bucket Amazon S3 yang ada yang dikonfigurasi untuk akses ke cadangan log transaksi**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

**Example memperbarui ke bucket Amazon S3 target baru**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket1/mynewfolder';
```

# Menampilkan daftar cadangan log transaksi yang tersedia
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Listing"></a>

Dengan RDS for SQL Server, basis data yang dikonfigurasi untuk menggunakan model pemulihan penuh dan retensi cadangan instans DB yang diatur ke satu atau beberapa hari akan memiliki cadangan log transaksi yang diaktifkan secara otomatis. Dengan mengaktifkan akses ke cadangan log transaksi, cadangan log transaksi tersebut dari rentang waktu hingga tujuh hari akan tersedia untuk Anda salin ke bucket Amazon S3 Anda.

Setelah Anda mengaktifkan akses ke cadangan log transaksi, Anda dapat mulai menggunakannya untuk menampilkan daftar dan menyalin file cadangan log transaksi yang tersedia.

**Menampilkan daftar cadangan log transaksi**

Untuk menampilkan daftar semua cadangan log transaksi yang tersedia untuk basis data individual, panggil fungsi `rds_fn_list_tlog_backup_metadata`. Anda dapat menggunakan klausa `ORDER BY` atau `WHERE` saat memanggil fungsi.

**Example menampilkan daftar dan memfilter file cadangan log transaksi yang tersedia**  

```
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename');
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE rds_backup_seq_id = 3507;
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE backup_file_time_utc > '2022-09-15 20:44:01' ORDER BY backup_file_time_utc DESC;
```

![\[Output dari rds_fn_list_tlog_backup_metadata\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_func.png)


Fungsi `rds_fn_list_tlog_backup_metadata` ini menampilkan output berikut:


****  

| Nama kolom | Jenis data | Deskripsi | 
| --- | --- | --- | 
| `db_name` | sysname | Nama basis data yang disediakan untuk menampilkan daftar cadangan log transaksinya. | 
| `db_id` | int | Pengidentifikasi basis data internal untuk parameter input `db_name`. | 
| `family_guid` | uniqueidentifier | ID unik basis data asli saat pembuatan. Nilai ini tetap sama ketika basis data dipulihkan, bahkan ke nama basis data yang berbeda. | 
| `rds_backup_seq_id` | int | ID yang digunakan RDS secara internal untuk mempertahankan nomor urutan untuk setiap file cadangan log transaksi. | 
| `backup_file_epoch` | bigint | Waktu epoch saat file cadangan transaksi dihasilkan. | 
| `backup_file_time_utc` | datetime | Nilai konversi waktu UTC untuk nilai `backup_file_epoch`. | 
| `starting_lsn` | numeric(25,0) | Nomor urutan log dari catatan log pertama atau tertua untuk file cadangan log transaksi. | 
| `ending_lsn` | numeric(25,0) | Nomor urutan log dari catatan log terakhir atau berikutnya untuk file cadangan log transaksi. | 
| `is_log_chain_broken` | bit | Nilai boolean yang menunjukkan apakah rantai log terputus antara file cadangan log transaksi saat ini dan file cadangan log transaksi sebelumnya. | 
| `file_size_bytes` | bigint | Ukuran cadangan transaksional diatur dalam byte. | 
| `Error` | varchar(4000) | Pesan kesalahan jika fungsi `rds_fn_list_tlog_backup_metadata` mengeluarkan pengecualian. NULL jika tidak ada pengecualian. | 

# Menyalin cadangan log transaksi
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying"></a>

Untuk menyalin serangkaian cadangan log transaksi yang tersedia untuk basis data individual ke bucket Amazon S3 Anda, panggil prosedur tersimpan `rds_tlog_backup_copy_to_S3`. Prosedur tersimpan `rds_tlog_backup_copy_to_S3` akan memulai tugas baru untuk menyalin cadangan log transaksi. 

**catatan**  
Prosedur tersimpan `rds_tlog_backup_copy_to_S3` akan menyalin cadangan log transaksi tanpa memvalidasi berdasarkan atribut `is_log_chain_broken`. Untuk alasan ini, Anda harus secara manual mengonfirmasi rantai log yang tidak terputus sebelum menjalankan prosedur tersimpan `rds_tlog_backup_copy_to_S3`. Untuk penjelasan selengkapnya, lihat [Memvalidasi rantai log cadangan log transaksi](#USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain).

**Example penggunaan prosedur tersimpan `rds_tlog_backup_copy_to_S3`**  

```
exec msdb.dbo.rds_tlog_backup_copy_to_S3
	@db_name='mydatabasename',
	[@kms_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@backup_file_start_time='2022-09-01 01:00:15'],
	[@backup_file_end_time='2022-09-01 21:30:45'],
	[@starting_lsn=149000000112100001],
	[@ending_lsn=149000000120400001],
	[@rds_backup_starting_seq_id=5],
	[@rds_backup_ending_seq_id=10];
```

Parameter input berikut tersedia:


****  

| Parameter | Deskripsi | 
| --- | --- | 
| `@db_name` | Nama basis data yang cadangan log transaksinya akan disalin | 
| `@kms_key_arn` |  Kunci KMS yang dikelola pelanggan. Jika Anda mengenkripsi instans DB Anda dengan kunci KMS AWS terkelola, Anda harus membuat kunci yang dikelola pelanggan. Jika Anda mengenkripsi instans DB Anda dengan kunci yang dikelola pelanggan, Anda dapat menggunakan ARN kunci KMS yang sama. | 
| `@backup_file_start_time` | Stempel waktu UTC seperti yang disediakan dari kolom `[backup_file_time_utc]` pada fungsi `rds_fn_list_tlog_backup_metadata`. | 
| `@backup_file_end_time` | Stempel waktu UTC seperti yang disediakan dari kolom `[backup_file_time_utc]` pada fungsi `rds_fn_list_tlog_backup_metadata`. | 
| `@starting_lsn` | Nomor urutan log (LSN) seperti yang disediakan dari kolom `[starting_lsn]` pada fungsi `rds_fn_list_tlog_backup_metadata`. | 
| `@ending_lsn` | Nomor urutan log (LSN) seperti yang disediakan dari kolom `[ending_lsn]` pada fungsi `rds_fn_list_tlog_backup_metadata`. | 
| `@rds_backup_starting_seq_id` | Urutan ID seperti yang disediakan dari kolom `[rds_backup_seq_id]` pada fungsi `rds_fn_list_tlog_backup_metadata`. | 
| `@rds_backup_ending_seq_id` | Urutan ID seperti yang disediakan dari kolom `[rds_backup_seq_id]` pada fungsi `rds_fn_list_tlog_backup_metadata`. | 

Anda dapat menentukan satu set parameter waktu, LSN, atau ID urutan. Hanya satu set parameter yang diperlukan.

Anda juga dapat menentukan hanya satu parameter di salah satu set. Misalnya, dengan memberikan nilai hanya untuk parameter `backup_file_end_time`, semua file cadangan log transaksi yang tersedia sebelum waktu tersebut dalam batas tujuh hari akan disalin ke bucket Amazon S3 Anda. 

Berikut ini adalah kombinasi parameter input yang valid untuk prosedur tersimpan `rds_tlog_backup_copy_to_S3`.


****  

| Parameter yang disediakan | Hasil yang diharapkan | 
| --- | --- | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3  <br />	@db_name = 'testdb1',<br />            @backup_file_start_time='2022-08-23 00:00:00',<br />            @backup_file_end_time='2022-08-30 00:00:00';</pre>  | Menyalin cadangan log transaksi dari tujuh hari terakhir serta dalam rentang `backup_file_start_time` dan `backup_file_end_time` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi yang dihasilkan antara '2022-08-23 00:00:00' dan '2022-08-30 00:00:00'.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />           @db_name = 'testdb1',<br />           @backup_file_start_time='2022-08-23 00:00:00';</pre>  | Menyalin cadangan log transaksi dari tujuh hari terakhir dan mulai dari `backup_file_start_time` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi dari '2022-08-23 00:00:00' hingga cadangan log transaksi terbaru.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />          @db_name = 'testdb1',<br />          @backup_file_end_time='2022-08-30 00:00:00';</pre>  | Menyalin cadangan log transaksi dari tujuh hari terakhir hingga `backup_file_end_time` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi dari '2022-08-23 00:00:00' hingga '2022-08-30 00:00:00'.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />         @db_name='testdb1',<br />         @starting_lsn =1490000000040007,<br />         @ending_lsn =  1490000000050009;</pre>  | Menyalin cadangan log transaksi yang tersedia dari tujuh hari terakhir dan berada dalam rentang `starting_lsn` dan `ending_lsn` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi dari tujuh hari terakhir dengan rentang LSN antara 1490000000040007 dan 1490000000050009.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @starting_lsn =1490000000040007;</pre>  |  Menyalin cadangan log transaksi yang tersedia dari tujuh hari terakhir, mulai dari `starting_lsn` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi dari LSN 1490000000040007 hingga cadangan log transaksi terbaru.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @ending_lsn  =1490000000050009;</pre>  |  Menyalin cadangan log transaksi yang tersedia dari tujuh hari terakhir, hingga `ending_lsn` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi mulai dari tujuh hari terakhir hingga lsn 1490000000050009.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000,<br />       @rds_backup_ending_seq_id= 5000;</pre>  |  Menyalin cadangan log transaksi yang tersedia dari tujuh hari terakhir, dan berada dalam rentang `rds_backup_starting_seq_id` dan `rds_backup_ending_seq_id` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi mulai dari tujuh hari terakhir dan dalam rentang id urutan cadangan rds yang disediakan, mulai dari seq\$1id 2000 hingga seq\$1id 5000.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000;</pre>  |  Menyalin cadangan log transaksi yang tersedia dari tujuh hari terakhir, mulai dari `rds_backup_starting_seq_id` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi mulai dari seq\$1id 2000, hingga cadangan log transaksi terbaru.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_ending_seq_id= 5000;</pre>  |  Menyalin cadangan log transaksi yang tersedia dari tujuh hari terakhir, hingga `rds_backup_ending_seq_id` yang disediakan. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi mulai dari tujuh hari terakhir, hingga seq\$1id 5000.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_starting_seq_id= 2000;<br />      @rds_backup_ending_seq_id= 2000;</pre>  |  Menyalin cadangan log transaksi tunggal dengan `rds_backup_starting_seq_id` yang disediakan, jika tersedia dalam tujuh hari terakhir. Dalam contoh ini, prosedur tersimpan akan menyalin cadangan log transaksi tunggal yang memiliki seq\$1id 2000, jika ada dalam tujuh hari terakhir.   | 

## Memvalidasi rantai log cadangan log transaksi
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain"></a>

 Basis data yang dikonfigurasi untuk akses ke cadangan log transaksi harus memiliki retensi cadangan otomatis yang aktif. Retensi cadangan otomatis mengatur basis data pada instans DB ke model pemulihan `FULL`. Untuk mendukung pemulihan titik waktu untuk basis data, hindari mengubah model pemulihan basis data, yang dapat mengakibatkan rantai log terputus. Kami menyarankan agar basis data tetap diatur ke model pemulihan `FULL`.

Untuk memvalidasi rantai log secara manual sebelum menyalin cadangan log transaksi, panggil fungsi `rds_fn_list_tlog_backup_metadata` dan tinjau nilai di kolom `is_log_chain_broken`. Nilai “1" menunjukkan rantai log terputus antara cadangan log saat ini dan cadangan log sebelumnya.

Contoh berikut menunjukkan rantai log yang terputus dalam output dari prosedur tersimpan `rds_fn_list_tlog_backup_metadata`. 

![\[Output dari rds_fn_list_tlog_backup_metadata yang menunjukkan rantai log yang terputus.\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_logchain_error.png)


Dalam rantai log normal, nilai nomor urutan log (LSN) untuk first\$1lsn untuk rds\$1sequence\$1id yang diberikan harus cocok dengan nilai last\$1lsn di rds\$1sequence\$1id sebelumnya. Pada gambar, rds\$1sequence\$1id 45 memiliki nilai first\$1lsn 90987, yang tidak cocok dengan nilai last\$1lsn 90985 untuk rds\$1sequence\$1id 44 sebelumnya.

Untuk informasi selengkapnya tentang arsitektur log transaksi SQL Server dan nomor urutan log, lihat [Transaction Log Logical Architecture](https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver15#Logical_Arch) dalam dokumentasi Microsoft SQL Server.

# Struktur folder dan file bucket Amazon S3
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.S3namingConvention"></a>

Cadangan log transaksi memiliki struktur standar dan konvensi penamaan berikut dalam bucket Amazon S3:
+ Folder baru dibuat dalam jalur `target_s3_arn` untuk setiap basis data dengan struktur penamaan `{db_id}.{family_guid}`.
+ Di dalam folder, cadangan log transaksi memiliki struktur nama file `{db_id}.{family_guid}.{rds_backup_seq_id}.{backup_file_epoch}`.
+ Anda dapat melihat detail `family_guid,db_id,rds_backup_seq_id and backup_file_epoch` dengan fungsi `rds_fn_list_tlog_backup_metadata`.

Contoh berikut menunjukkan folder dan struktur file dari satu set cadangan log transaksi dalam bucket Amazon S3.

![\[Struktur bucket Amazon S3 dengan akses ke log transaksi\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_s3.png)


# Melacak status tugas
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus"></a>

 Untuk melacak status tugas penyalinan Anda, panggil prosedur tersimpan `rds_task_status`. Jika Anda tidak memberikan parameter apa pun, prosedur tersimpan akan menampilkan status semua tugas. 

**Example penggunaan:**  

```
exec msdb.dbo.rds_task_status
  @db_name='database_name',
  @task_id=ID_number;
```

Parameter berikut ini bersifat opsional:
+ `@db_name` – Nama basis data yang status tugasnya akan ditampilkan.
+ `@task_id` – ID tugas yang status tugasnya akan ditampilkan.

**Example menampilkan daftar status untuk ID tugas tertentu:**  

```
exec msdb.dbo.rds_task_status @task_id=5;
```

**Example menampilkan daftar status untuk basis data dan tugas tertentu:**  

```
exec msdb.dbo.rds_task_status@db_name='my_database',@task_id=5;
```

**Example menampilkan daftar semua tugas dan statusnya untuk basis data tertentu:**  

```
exec msdb.dbo.rds_task_status @db_name='my_database';
```

**Example menampilkan daftar semua tugas dan statusnya di instans DB saat ini:**  

```
exec msdb.dbo.rds_task_status;
```

# Membatalkan tugas
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.CancelTask"></a>

Untuk membatalkan tugas yang berjalan, panggil prosedur tersimpan `rds_cancel_task`.

**Example penggunaan:**  

```
exec msdb.dbo.rds_cancel_task @task_id=ID_number;
```

Parameter berikut diperlukan:
+ `@task_id` – ID tugas yang akan dibatalkan. Anda dapat melihat ID tugas dengan memanggil prosedur tersimpan `rds_task_status`.

Untuk informasi selengkapnya tentang melihat dan membatalkan tugas yang berjalan, lihat [Mengimpor dan mengekspor basis data SQL Server menggunakan pencadangan dan pemulihan native](SQLServer.Procedural.Importing.md).

# Pemecahan masalah akses ke cadangan log transaksi
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Troubleshooting"></a>

Berikut ini adalah masalah yang mungkin Anda temui saat menggunakan prosedur tersimpan untuk akses ke cadangan log transaksi.


****  

| Prosedur Tersimpan | Pesan Kesalahan | Masalah | Saran pemecahan masalah | 
| --- | --- | --- | --- | 
| rds\$1tlog\$1copy\$1setup | Pencadangan dinonaktifkan pada instans DB ini. Aktifkan pencadangan instans DB dengan retensi setidaknya “1" dan coba lagi. | Pencadangan otomatis tidak diaktifkan untuk instans DB. |  Retensi cadangan instans DB harus diaktifkan dengan retensi setidaknya satu hari. Untuk informasi selengkapnya tentang mengaktifkan cadangan otomatis dan mengonfigurasi retensi cadangan, lihat [Periode retensi cadangan](USER_WorkingWithAutomatedBackups.BackupRetention.md).  | 
| rds\$1tlog\$1copy\$1setup | Kesalahan saat menjalankan prosedur tersimpan rds\$1tlog\$1copy\$1setup. Sambungkan kembali ke RDS titik akhir dan coba lagi. | Terjadi kesalahan internal. | Sambungkan kembali ke RDS titik akhir dan jalankan prosedur yang `rds_tlog_copy_setup` disimpan lagi. | 
| rds\$1tlog\$1copy\$1setup | Menjalankan prosedur tersimpan rds\$1tlog\$1backup\$1copy\$1setup di dalam transaksi tidak didukung. Verifikasi bahwa sesi tidak memiliki transaksi terbuka dan coba lagi. | Prosedur tersimpan dicoba dalam transaksi menggunakan `BEGIN` dan `END`. | Hindari menggunakan `BEGIN` dan `END` saat menjalankan prosedur tersimpan `rds_tlog_copy_setup`. | 
| rds\$1tlog\$1copy\$1setup | Nama bucket S3 untuk parameter input `@target_s3_arn` harus berisi setidaknya satu karakter selain spasi.  | Nilai yang salah diberikan untuk parameter input `@target_s3_arn`. | Pastikan parameter input `@target_s3_arn` menentukan bucket Amazon ARN S3 lengkap. | 
| rds\$1tlog\$1copy\$1setup | Opsi `SQLSERVER_BACKUP_RESTORE` tidak diaktifkan atau sedang dalam proses diaktifkan. Aktifkan opsi atau coba lagi nanti.  | Opsi `SQLSERVER_BACKUP_RESTORE` tidak diaktifkan pada instans DB atau baru saja diaktifkan dan menunggu aktivasi internal. | Aktifkan opsi `SQLSERVER_BACKUP_RESTORE` seperti yang ditentukan di bagian Persyaratan. Tunggu beberapa menit dan jalankan prosedur tersimpan `rds_tlog_copy_setup` lagi. | 
| rds\$1tlog\$1copy\$1setup | ARN S3 target untuk parameter input `@target_s3_arn` tidak boleh kosong atau null.  | Nilai `NULL` diberikan untuk parameter input `@target_s3_arn`, atau nilainya tidak diberikan. | Pastikan parameter input `@target_s3_arn` menentukan bucket Amazon ARN S3 lengkap. | 
| rds\$1tlog\$1copy\$1setup | ARN S3 target untuk parameter input `@target_s3_arn` harus diawali dengan arn:aws.  | Parameter input `@target_s3_arn` diberikan tanpa `arn:aws` di bagian depan. | Pastikan parameter input `@target_s3_arn` menentukan bucket Amazon ARN S3 lengkap. | 
| rds\$1tlog\$1copy\$1setup | Target S3 ARN sudah diatur ke nilai yang disediakan. | Prosedur `rds_tlog_copy_setup` tersimpan sebelumnya berjalan dan dikonfigurasi dengan bucket Amazon S3. ARN | Untuk mengubah nilai bucket Amazon S3 untuk akses ke cadangan log transaksi, berikan `target S3 ARN` yang berbeda. | 
| rds\$1tlog\$1copy\$1setup | Tidak dapat menghasilkan kredensial untuk mengaktifkan Akses ke Cadangan Log Transaksi. Konfirmasikan jalur S3 ARN yang disediakan`rds_tlog_copy_setup`, dan coba lagi nanti. | Ada kesalahan yang tidak ditentukan saat menghasilkan kredensial untuk mengaktifkan akses ke cadangan log transaksi. | Tinjau konfigurasi pengaturan Anda dan coba lagi.  | 
| rds\$1tlog\$1copy\$1setup | Anda tidak dapat menjalankan prosedur tersimpan rds\$1tlog\$1copy\$1setup saat ada tugas yang tertunda. Tunggu tugas tertunda selesai dan coba lagi.  | Hanya dua tugas yang dapat dijalankan kapan saja. Ada tugas tertunda yang menunggu penyelesaian. | Lihat tugas yang tertunda dan tunggu tugas tersebut selesai. Untuk informasi selengkapnya tentang pemantauan status tugas, lihat [Melacak status tugas](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Tugas penyalinan file cadangan T-log telah dikeluarkan untuk basis data: %s dengan Id tugas: %d, coba lagi nanti.  | Hanya satu tugas penyalinan yang dapat dijalankan kapan saja untuk basis data tertentu. Ada tugas penyalinan tertunda yang menunggu penyelesaian. | Lihat tugas yang tertunda dan tunggu tugas tersebut selesai. Untuk informasi selengkapnya tentang pemantauan status tugas, lihat [Melacak status tugas](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Setidaknya satu dari tiga set parameter ini harus disediakan. SET-1 :( @backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET -2 :( @starting\$1lsn, @ending\$1lsn) \$1 SET -3 :( @rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id) | Tidak ada satu pun dari tiga set parameter yang disediakan, atau set parameter yang disediakan tidak memiliki parameter yang diperlukan. | Anda dapat menentukan parameter waktu, lsn, atau ID urutan. Satu set dari tiga set parameter ini diperlukan. Untuk informasi selengkapnya tentang parameter yang diperlukan, lihat [Menyalin cadangan log transaksi](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Pencadangan dinonaktifkan pada instans Anda. Aktifkan pencadangan dan coba lagi dalam beberapa waktu.  | Pencadangan otomatis tidak diaktifkan untuk instans DB. |  Untuk informasi selengkapnya tentang mengaktifkan cadangan otomatis dan mengonfigurasi retensi cadangan, lihat [Periode retensi cadangan](USER_WorkingWithAutomatedBackups.BackupRetention.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Tidak dapat menemukan basis data yang diberikan %s.  | Nilai yang diberikan untuk parameter input `@db_name` tidak cocok dengan nama basis data pada instans DB. | Gunakan nama basis data yang benar. Untuk menampilkan daftar semua basis data berdasarkan nama, jalankan `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Tidak dapat menjalankan prosedur tersimpan RDS\$1TLOG\$1BACKUP\$1COPY\$1TO\$1S3 untuk database sistem Server atau database rdsadmin. SQL | Nilai yang disediakan untuk parameter input `@db_name` cocok dengan nama database sistem SQL Server atau RDSAdmin database. | Basis data berikut tidak diizinkan untuk digunakan dengan akses ke cadangan log transaksi: `master, model, msdb, tempdb, RDSAdmin.`  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Nama basis data untuk parameter input @db\$1name tidak boleh kosong atau null.  | Nilai yang diberikan untuk parameter input `@db_name` kosong atau `NULL`. | Gunakan nama basis data yang benar. Untuk menampilkan daftar semua basis data berdasarkan nama, jalankan `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Periode retensi cadangan instans DB harus diatur ke setidaknya 1 untuk menjalankan prosedur tersimpan rds\$1tlog\$1backup\$1copy\$1setup.  | Pencadangan otomatis tidak diaktifkan untuk instans DB. | Untuk informasi selengkapnya tentang mengaktifkan cadangan otomatis dan mengonfigurasi retensi cadangan, lihat [Periode retensi cadangan](USER_WorkingWithAutomatedBackups.BackupRetention.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Kesalahan saat menjalankan prosedur tersimpan rds\$1tlog\$1backup\$1copy\$1to\$1S3. Sambungkan kembali ke RDS titik akhir dan coba lagi. | Terjadi kesalahan internal. | Sambungkan kembali ke RDS titik akhir dan jalankan prosedur yang `rds_tlog_backup_copy_to_S3` disimpan lagi. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Hanya satu dari tiga set parameter ini yang dapat disediakan. SET-1 :( @backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET -2 :( @starting\$1lsn, @ending\$1lsn) \$1 SET -3 :( @rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id) | Beberapa set parameter disediakan. | Anda dapat menentukan parameter waktu, lsn, atau ID urutan. Satu set dari tiga set parameter ini diperlukan. Untuk informasi selengkapnya tentang parameter yang diperlukan, lihat [Menyalin cadangan log transaksi](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Menjalankan prosedur tersimpan rds\$1tlog\$1backup\$1copy\$1to\$1S3 di dalam transaksi tidak didukung. Verifikasi bahwa sesi tidak memiliki transaksi terbuka dan coba lagi. | Prosedur tersimpan dicoba dalam transaksi menggunakan `BEGIN` dan `END`. | Hindari menggunakan `BEGIN` dan `END` saat menjalankan prosedur tersimpan `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Parameter yang disediakan berada di luar periode retensi log cadangan transaksi. Untuk menampilkan daftar file cadangan log transaksi yang tersedia, jalankan fungsi rds\$1fn\$1list\$1tlog\$1backup\$1metadata.  | Tidak ada cadangan log transaksional yang tersedia untuk parameter input yang disediakan yang sesuai dalam periode retensi salinan. | Coba lagi dengan set parameter yang valid. Untuk informasi selengkapnya tentang parameter yang diperlukan, lihat [Menyalin cadangan log transaksi](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Ada kesalahan izin dalam memproses permintaan. Pastikan bucket berada di Akun dan Wilayah yang sama dengan Instans DB, dan konfirmasikan izin kebijakan bucket S3 berdasarkan templat dalam dokumentasi publik.  | Ada masalah yang terdeteksi pada bucket S3 yang disediakan atau izin kebijakannya. | Konfirmasikan pengaturan Anda untuk akses ke cadangan log transaksi sudah benar. Untuk informasi selengkapnya tentang persyaratan penyiapan bucket S3 Anda, lihat [Persyaratan](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Menjalankan prosedur `rds_tlog_backup_copy_to_S3` tersimpan pada instance replika RDS baca tidak diizinkan. | Prosedur tersimpan dicoba pada contoh replika RDS baca. | Connect ke instans DB RDS utama untuk menjalankan prosedur `rds_tlog_backup_copy_to_S3` tersimpan. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Parameter LSN untuk input `@starting_lsn` harus kurang dari`@ending_lsn`. | Nilai yang diberikan untuk parameter input `@starting_lsn` lebih besar dari nilai yang diberikan untuk parameter input `@ending_lsn`. | Pastikan nilai yang diberikan untuk parameter input `@starting_lsn` kurang dari nilai yang diberikan untuk parameter input `@ending_lsn`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Prosedur tersimpan `rds_tlog_backup_copy_to_S3` hanya dapat dilakukan oleh anggota peran `db_owner` dalam basis data sumber.  | Peran `db_owner` belum diberikan untuk akun yang mencoba menjalankan prosedur tersimpan `rds_tlog_backup_copy_to_S3` pada `db_name` yang disediakan. | Pastikan akun yang menjalankan prosedur tersimpan diizinkan dengan peran `db_owner` untuk `db_name` yang disediakan. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | ID urutan untuk parameter input `@rds_backup_starting_seq_id` harus kurang dari atau sama dengan`@rds_backup_ending_seq_id`.  | Nilai yang diberikan untuk parameter input `@rds_backup_starting_seq_id` lebih besar dari nilai yang diberikan untuk parameter input `@rds_backup_ending_seq_id`. | Pastikan nilai yang diberikan untuk parameter input `@rds_backup_starting_seq_id` kurang dari nilai yang diberikan untuk parameter input `@rds_backup_ending_seq_id`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | RESTOREOpsi SQLSERVER BACKUP \$1 \$1 tidak diaktifkan atau sedang dalam proses diaktifkan. Aktifkan opsi atau coba lagi nanti.  | Opsi `SQLSERVER_BACKUP_RESTORE` tidak diaktifkan pada instans DB atau baru saja diaktifkan dan menunggu aktivasi internal. | Aktifkan opsi `SQLSERVER_BACKUP_RESTORE` seperti yang ditentukan di bagian Persyaratan. Tunggu beberapa menit dan jalankan prosedur tersimpan `rds_tlog_backup_copy_to_S3` lagi. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Waktu mulai untuk parameter input `@backup_file_start_time` harus kurang dari `@backup_file_end_time`. | Nilai yang diberikan untuk parameter input `@backup_file_start_time` lebih besar dari nilai yang diberikan untuk parameter input `@backup_file_end_time`. | Pastikan nilai yang diberikan untuk parameter input `@backup_file_start_time` kurang dari nilai yang diberikan untuk parameter input `@backup_file_end_time`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Kami tidak dapat memproses permintaan karena tidak ada akses. Periksa pengaturan dan izin Anda untuk fitur tersebut.  | Mungkin ada masalah dengan izin bucket Amazon S3, atau bucket Amazon S3 yang disediakan ada di akun atau Wilayah lain. | Pastikan izin kebijakan bucket Amazon S3 diizinkan untuk mengizinkan akses. RDS Pastikan bucket Amazon S3 berada di akun dan Wilayah yang sama dengan instans DB. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Anda tidak dapat memberikan parameter KMS Key ARN as input ke prosedur tersimpan untuk instance yang tidak dienkripsi penyimpanan. | Ketika enkripsi penyimpanan tidak diaktifkan pada instans DB, parameter input `@kms_key_arn` tidak boleh disediakan. | Jangan berikan parameter input untuk `@kms_key_arn`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Anda harus memberikan parameter KMS Key ARN sebagai input ke prosedur tersimpan untuk instance terenkripsi penyimpanan. | Ketika enkripsi penyimpanan diaktifkan pada instans DB, parameter input `@kms_key_arn` harus disediakan. | Berikan parameter input `@kms_key_arn` dengan nilai yang cocok dengan bucket Amazon S3 yang akan digunakan untuk pencadangan log transaksi. ARN | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Anda harus menjalankan prosedur tersimpan `rds_tlog_copy_setup` dan mengatur `@target_s3_arn`, sebelum menjalankan prosedur tersimpan `rds_tlog_backup_copy_to_S3`.  | Akses ke prosedur penyiapan cadangan log transaksi tidak selesai sebelum mencoba menjalankan prosedur tersimpan `rds_tlog_backup_copy_to_S3`. | Jalankan prosedur tersimpan `rds_tlog_copy_setup` sebelum menjalankan prosedur tersimpan `rds_tlog_backup_copy_to_S3`. Untuk informasi selengkapnya tentang menjalankan prosedur penyiapan akses ke cadangan log transaksi, lihat [Mengatur akses ke cadangan log transaksi](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md).  | 