

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

# Mengimpor dan mengekspor basis data SQL Server menggunakan pencadangan dan pemulihan native
<a name="SQLServer.Procedural.Importing"></a>

Amazon RDS mendukung pencadangan dan pemulihan native untuk basis data Microsoft SQL Server menggunakan file cadangan penuh (file .bak). Saat Anda menggunakan RDS, Anda mengakses file yang disimpan di Amazon S3 bukannya menggunakan sistem file lokal di server basis data.

Misalnya, Anda dapat membuat backup penuh dari server lokal Anda, menyimpannya di S3, lalu memulihkannya ke instans DB Amazon RDS yang ada. Anda juga dapat membuat backup dari RDS, menyimpannya di S3, lalu memulihkannya ke mana pun Anda inginkan.

Pencadangan dan pemulihan asli tersedia di semua AWS Wilayah untuk instans DB AZ tunggal dan multi-AZ, termasuk instans DB multi-AZ dengan replika baca. Pencadangan dan pemulihan native tersedia untuk semua edisi Microsoft SQL Server yang didukung di Amazon RDS.

Diagram berikut menunjukkan skenario yang didukung.

![\[Arsitektur Pencadangan dan Pemulihan Native\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/SQL-bak-file.png)


Menggunakan file .bak native untuk mencadangkan dan memulihkan basis data biasanya merupakan cara tercepat untuk mencadangkan dan memulihkan basis data. Ada banyak keuntungan tambahan jika menggunakan pencadangan dan pemulihan native. Misalnya, Anda dapat melakukan hal berikut:
+ Memigrasi basis data ke atau dari Amazon RDS.
+ Memigrasi basis data antara beberapa instans DB RDS untuk SQL Server.
+ Memigrasi data, skema, prosedur tersimpan, pemicu, dan kode basis data lainnya di dalam file .bak.
+ Mencadangkan dan memulihkan basis data tunggal, bukan seluruh instans DB.
+ Membuat salinan basis data untuk pengembangan, pengujian, pelatihan, dan demonstrasi.
+ Menyimpan dan mentransfer file backup dengan Amazon S3, untuk perlindungan tambahan bagi pemulihan bencana.
+ Buat backup native dari basis data yang telah mengaktifkan Enkripsi Data Transparan (TDE), dan pulihkan backup tersebut ke basis data on-premise. Untuk informasi selengkapnya, lihat [Dukungan untuk Enkripsi Data Transparan di SQL Server](Appendix.SQLServer.Options.TDE.md).
+ Kembalikan cadangan native basis data on-premise yang mengaktifkan TDE ke RDS untuk instans SQL Server DB. Untuk informasi selengkapnya, lihat [Dukungan untuk Enkripsi Data Transparan di SQL Server](Appendix.SQLServer.Options.TDE.md).

**Contents**
+ [Batasan dan rekomendasi](#SQLServer.Procedural.Importing.Native.Limitations)
+ [Menyiapkan pencadangan dan pemulihan native](SQLServer.Procedural.Importing.Native.Enabling.md)
  + [Membuat peran IAM secara manual untuk pencadangan dan pemulihan native](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)
+ [Menggunakan pencadangan dan pemulihan native](SQLServer.Procedural.Importing.Native.Using.md)
  + [Membuat backup basis data](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Backup)
    + [Penggunaan](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Backup.Syntax)
    + [Contoh](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Backup.Examples)
  + [Memulihkan basis data](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore)
    + [Penggunaan](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Syntax)
    + [Contoh](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Examples)
  + [Memulihkan log](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log)
    + [Penggunaan](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log.Syntax)
    + [Contoh](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log.Examples)
  + [Menyelesaikan pemulihan basis data](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Finish.Restore)
    + [Penggunaan](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax)
  + [Bekerja dengan basis data yang dipulihkan secara parsial](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Partially.Restored)
    + [Menghilangkan basis data yang dipulihkan parsial](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Drop.Partially.Restored)
    + [Perilaku pemulihan dan point-in-time pemulihan snapshot untuk database yang dipulihkan sebagian](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Snapshot.Restore)
  + [Membatalkan tugas](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Cancel)
    + [Penggunaan](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Cancel.Syntax)
  + [Melacak status tugas](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking)
    + [Penggunaan](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Syntax)
    + [Contoh](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Examples)
    + [Respons](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Response)
+ [Mengompresi file backup](SQLServer.Procedural.Importing.Native.Compression.md)
+ [Pemecahan Masalah](SQLServer.Procedural.Importing.Native.Troubleshooting.md)
+ [Mengimpor dan mengekspor data SQL Server menggunakan metode lain](SQLServer.Procedural.Importing.Snapshots.md)
  + [Mengimpor data ke RDS for SQL Server dengan menggunakan snapshot](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Importing.Procedure)
    + [Mengimpor data](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.Import)
      + [Wizard Membuat dan Menerbitkan Skrip](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.ScriptWizard)
      + [Wizard Impor dan Ekspor](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.ImportExportWizard)
      + [Penyalinan massal](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.BulkCopy)
  + [Mengekspor data dari RDS for SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting)
    + [Wizard Impor dan Ekspor pada SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting.SSIEW)
    + [Wizard Membuat dan Menerbitkan Skrip dan utilitas bcp pada SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting.SSGPSW)
+ [Menggunakan utilitas BCP dari Linux untuk mengimpor dan mengekspor data](SQLServer.Procedural.Importing.BCP.Linux.md)
  + [Prasyarat](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Prerequisites)
  + [Menginstal alat baris perintah SQL Server di Linux](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Installing)
  + [Mengekspor data dari RDS for SQL Server](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting)
    + [Sintaks ekspor dasar](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic)
    + [Contoh ekspor](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example)
  + [Mengimpor data ke RDS untuk SQL Server](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing)
    + [Sintaks impor dasar](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic)
    + [Contoh impor](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing.Example)
  + [Opsi BCP umum](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Options)
  + [Praktik terbaik dan pertimbangan](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.BestPractices)
  + [Memecahkan masalah umum](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting)

## Batasan dan rekomendasi
<a name="SQLServer.Procedural.Importing.Native.Limitations"></a>

Berikut ini adalah beberapa batasan dalam menggunakan pencadangan dan pemulihan native: 
+ Anda tidak dapat mencadangkan, atau memulihkan dari, bucket Amazon S3 di AWS Wilayah lain dari instans Amazon RDS DB Anda.
+ Anda tidak dapat memulihkan basis data dengan nama yang sama seperti basis data yang sudah ada. Nama basis data bersifat unik.
+ Kami sangat menyarankan agar Anda tidak memulihkan cadangan dari satu zona waktu ke zona waktu yang berbeda. Jika Anda memulihkan cadangan dari satu zona waktu ke zona waktu yang berbeda, Anda harus mengaudit kueri dan aplikasi Anda untuk mengetahui efek dari perubahan zona waktu.
+ RDS untuk Microsoft SQL Server memiliki batas ukuran 5 TB per file. Untuk pencadangan native pada basis data yang lebih besar, Anda dapat menggunakan pencadangan multi-file.
+ Ukuran basis data maksimum yang dapat dicadangkan ke S3 bergantung pada memori, CPU, I/O, dan sumber daya jaringan yang tersedia pada instans DB. Semakin besar basis data, semakin banyak memori yang dikonsumsi agen pencadangan.
+ Anda tidak dapat mencadangkan atau memulihkan lebih dari 10 file backup sekaligus.
+ Pencadangan diferensial didasarkan pada backup penuh yang terakhir. Agar pencadangan diferensial berhasil, Anda tidak dapat mengambil snapshot antara backup penuh terakhir dan pencadangan diferensial. Jika Anda menginginkan pencadangan diferensial, tetapi ada snapshot manual atau otomatis, maka lakukan backup penuh lainnya sebelum melakukan pencadangan diferensial.
+ Pemulihan diferensial dan log diferensial tidak didukung untuk basis data dengan file yang file\$1guid (pengidentifikasi unik) diatur ke `NULL`.
+ Anda dapat menjalankan hingga dua tugas pencadangan atau pemulihan pada saat bersamaan.
+ Anda tidak dapat melakukan pencadangan log native dari SQL Server di Amazon RDS.
+ RDS mendukung pemulihan asli database hingga 64 TiB. Pemulihan native untuk basis data di Edisi Ekspres SQL Server dibatasi hingga 10 GB.
+ Anda tidak dapat melakukan pencadangan native selama waktu pemeliharaan, atau saat Amazon RDS sedang dalam proses mengambil snapshot basis data. Jika tugas pencadangan native tumpang tindih dengan jendela pencadangan harian RDS, tugas pencadangan native akan dibatalkan.
+ Pada instans DB Multi-AZ, Anda hanya dapat melakukan pemulihan native di basis data yang dicadangkan di model pemulihan penuh.
+ Memanggil prosedur RDS untuk pencadangan dan pemulihan native dalam transaksi tidak didukung.
+ Gunakan enkripsi simetris AWS KMS key untuk mengenkripsi cadangan Anda. Amazon RDS tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat [Membuat kunci enkripsi simetris KMS](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) di *Panduan Developer AWS Key Management Service *.
+ File pencadangan native dienkripsi dengan kunci KMS yang ditentukan menggunakan mode kripto "Hanya Enkripsi". Saat Anda memulihkan file backup terenkripsi, ingatlah bahwa file tersebut dienkripsi dengan mode kripto "Encryption-Only".
+ Anda tidak dapat memulihkan basis data yang berisi kelompok file FILESTREAM.
+ Enkripsi sisi server Amazon S3 dengan AWS KMS (SSE-KMS) didukung melalui konfigurasi enkripsi default bucket S3 saat Anda meneruskan prosedur penyimpanan cadangan. `@enable_bucket_default_encryption=1` Secara default, pemulihan mendukung enkripsi sisi server objek S3.

  Saat Anda memberikan kunci KMS ke prosedur yang disimpan, setiap cadangan dan pemulihan asli dienkripsi dan didekripsi di sisi klien dengan kunci KMS. AWS menyimpan cadangan di bucket S3 dengan SSE-S3 saat `@enable_bucket_default_encryption=0` atau dengan kunci enkripsi default yang dikonfigurasi bucket S3 Anda saat. `@enable_bucket_default_encryption=1`
+ Saat menggunakan Titik Akses S3, titik akses tidak dapat dikonfigurasi untuk menggunakan VPC internal RDS.
+ Untuk kinerja tertinggi, sebaiknya gunakan bucket direktori atau titik akses untuk bucket direktori jika tersedia di wilayah Anda.

Jika basis data Anda dapat offline saat file backup dibuat, disalin, dan dipulihkan, kami menyarankan Anda untuk menggunakan pencadangan dan pemulihan native untuk memigrasinya ke RDS. Jika database lokal tidak bisa offline, sebaiknya gunakan database AWS Database Migration Service untuk memigrasikan database ke Amazon RDS. Untuk informasi lebih lanjut, lihat [Apa itu AWS Database Migration Service?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 

Pencadangan dan pemulihan native tidak dimaksudkan untuk menggantikan kemampuan pemulihan data dari fitur salinan snapshot lintas-wilayah. Kami menyarankan Anda menggunakan salinan snapshot untuk menyalin snapshot database Anda ke AWS Wilayah lain untuk pemulihan bencana lintas wilayah di Amazon RDS. Lihat informasi yang lebih lengkap di [Menyalin snapshot DB untuk Amazon RDS](USER_CopySnapshot.md).

# Menyiapkan pencadangan dan pemulihan native
<a name="SQLServer.Procedural.Importing.Native.Enabling"></a>

Untuk mengatur pencadangan dan pemulihan native, Anda memerlukan tiga komponen:

1. Bucket Amazon S3 untuk menyimpan file cadangan Anda.

   Anda harus memiliki bucket S3 yang akan digunakan untuk file backup kemudian mengunggah backup yang ingin Anda migrasikan ke RDS. Jika sudah memiliki bucket Amazon S3, Anda dapat menggunakannya. Jika tidak, Anda dapat [ membuat bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html). Atau, Anda dapat memilih untuk dibuatkan bucket baru untuk Anda saat menambahkan opsi `SQLSERVER_BACKUP_RESTORE` dengan menggunakan Konsol Manajemen AWS.

   Untuk informasi tentang penggunaan S3, lihat [Panduan Pengguna Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)

1. Peran AWS Identity and Access Management (IAM) untuk mengakses bucket.

   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. Atau, Anda dapat membuatnya secara manual.

   Jika Anda ingin membuat peran IAM baru secara manual, gunakan pendekatan yang dibahas di bagian berikutnya. Lakukan hal yang sama jika Anda ingin melampirkan hubungan kepercayaan dan kebijakan perizinan pada peran IAM yang sudah ada.

1. Opsi `SQLSERVER_BACKUP_RESTORE` ditambahkan ke grup opsi di instans DB Anda.

   Untuk mengaktifkan pencadangan dan pemulihan native pada instans DB Anda, tambahkan opsi `SQLSERVER_BACKUP_RESTORE` untuk kelompok opsi pada instans DB Anda. Untuk informasi dan petunjuk selengkapnya, silakan lihat [Dukungan untuk pencadangan dan pemulihan native di SQL Server](Appendix.SQLServer.Options.BackupRestore.md).

## Membuat peran IAM secara manual untuk pencadangan dan pemulihan native
<a name="SQLServer.Procedural.Importing.Native.Enabling.IAM"></a>

Jika Anda ingin membuat peran IAM baru secara manual untuk digunakan dengan pencadangan dan pemulihan native, Anda dapat melakukannya. Dalam hal ini, Anda membuat peran untuk mendelegasikan izin dari layanan Amazon RDS ke bucket Amazon S3. Saat Anda membuat peran IAM, Anda melampirkan hubungan kepercayaan dan kebijakan perizinan. Hubungan kepercayaan memungkinkan RDS mengambil peran ini. Kebijakan izin menentukan tindakan yang dapat dilakukan peran ini. Untuk informasi selengkapnya tentang pembuatan peran, lihat [Membuat peran untuk mendelegasikan izin ke layanan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

Untuk fitur pencadangan dan pemulihan native, gunakan hubungan kepercayaan dan kebijakan perizinan yang serupa dengan contoh dalam bagian ini. Dalam contoh berikut, kami menggunakan nama pengguna utama layanan `rds.amazonaws.com` sebagai alias untuk semua akun layanan. Dalam contoh lain, kami menentukan Amazon Resource Name (ARN) untuk mengidentifikasi akun, pengguna, atau peran lain yang kami berikan akses ke dalam kebijakan kepercayaan.

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 hubungan kepercayaan berbasis sumber daya untuk membatasi izin layanan ke sumber daya tertentu. Ini adalah cara yang 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 tersebut dan nilai `aws:SourceArn` berisi ID akun. Dalam hal ini, nilai `aws:SourceAccount` dan akun dalam nilai `aws:SourceArn` harus menggunakan ID akun yang sama saat digunakan dalam pernyataan yang sama.
+ Gunakan `aws:SourceArn` jika Anda menginginkan akses lintas layanan untuk satu sumber daya.
+ Gunakan `aws:SourceAccount` jika Anda ingin mengizinkan pengaitan sumber daya apa pun di akun tersebut dengan penggunaan lintas layanan.

Dalam hubungan kepercayaan, pastikan untuk menggunakan kunci konteks kondisi global `aws:SourceArn` dengan ARN penuh dari sumber daya yang mengakses peran. Untuk pencadangan dan pemulihan native, pastikan untuk menyertakan grup opsi DB dan instans DB, seperti yang ditunjukkan dalam contoh berikut.

**Example hubungan kepercayaan dengan kunci konteks kondisi global untuk pencadangan dan pemulihan asli**    
****  

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

Contoh berikut menggunakan ARN untuk menentukan sumber daya. Untuk informasi selengkapnya tentang penggunaanARNs, lihat [nama sumber daya Amazon (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). 

**Example kebijakan izin untuk pencadangan dan pemulihan asli tanpa dukungan enkripsi**    
****  

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

**Example kebijakan perizinan untuk pencadangan dan pemulihan native dengan didukung enkripsi**  
Jika Anda ingin mengenkripsi file backup, sertakan kunci enkripsi dalam kebijakan perizinan Anda. Untuk informasi kunci enkripsi selengkapnya, lihat [Memulai](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) di *Panduan Developer AWS Key Management Service *.  
Anda harus menggunakan kunci KMS enkripsi simetris untuk mengenkripsi cadangan Anda. Amazon RDS tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat [Membuat kunci enkripsi simetris KMS](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) di *Panduan Developer AWS Key Management Service *.  
Peran IAM juga harus menjadi pengguna kunci dan administrator kunci untuk kunci KMS, yaitu, harus disebutkan dalam kebijakan kunci. Untuk informasi selengkapnya, lihat [Membuat kunci enkripsi simetris KMS](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) di *Panduan Developer AWS Key Management Service *.  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToKey",
      "Effect": "Allow",
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey",
        "kms:Encrypt",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id"
    },
    {
      "Sid": "AllowAccessToS3",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
    },
    {
      "Sid": "GetS3Info",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectAttributes",
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

**Example kebijakan izin untuk pencadangan dan pemulihan asli menggunakan titik akses tanpa dukungan enkripsi**  
Tindakan yang diperlukan untuk menggunakan titik akses S3 sama dengan untuk bucket S3. Jalur sumber daya diperbarui agar sesuai dengan pola ARN titik akses S3.  
Titik akses harus dikonfigurasi untuk menggunakan **Network origin: Internet** sebagai RDS tidak mempublikasikan pribadi VPCs. Lalu lintas S3 dari instans RDS tidak melalui internet publik karena melalui pribadi. VPCs  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
                ],
            "Resource": [
            "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap",
            "arn:aws:s3:::underlying-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
                ],
                "Resource": [
                "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap/*",
                    "arn:aws:s3:::underlying-bucket/*"
                    ]
                }
            ]   
}
```

**Example kebijakan izin untuk pencadangan dan pemulihan asli menggunakan titik akses untuk bucket direktori tanpa dukungan enkripsi**  
Bucket direktori menggunakan [mekanisme otorisasi berbasis sesi](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-authenticating-authorizing.html) yang berbeda dari bucket tujuan umum, jadi satu-satunya izin yang diperlukan untuk pemulihan cadangan asli adalah izin “s3express:” tingkat ember. CreateSession Untuk mengonfigurasi akses tingkat objek, Anda harus menggunakan [titik akses untuk bucket direktori](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-points-directory-buckets-policies.html).  
Titik akses harus dikonfigurasi untuk menggunakan **Network origin: Internet** sebagai RDS tidak mempublikasikan pribadi VPCs. Lalu lintas S3 dari instans RDS tidak melalui internet publik karena melalui pribadi. VPCs  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action": "s3express:CreateSession",
        "Resource": 
            [
                "arn:aws:s3express:us-east-1:111122223333:accesspoint/amzn-s3-demo-accesspoint--use1-az6--xa-s3",
                "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--use1-az6--x-s3"
            ]
        }
    ]
}
```

# Menggunakan pencadangan dan pemulihan native
<a name="SQLServer.Procedural.Importing.Native.Using"></a>

Setelah Anda mengaktifkan dan mengonfigurasi pencadangan dan pemulihan native, Anda dapat mulai menggunakannya. Pertama, Anda melakukan koneksi ke basis data Microsoft SQL Server, lalu Anda memanggil prosedur tersimpan Amazon RDS untuk melakukan pekerjaan tersebut. Untuk petunjuk tentang melakukan koneksi ke basis data Anda, lihat [Menyambung ke instans Microsoft SQL Server DB](USER_ConnectToMicrosoftSQLServerInstance.md). 

Beberapa prosedur yang disimpan mewajibkan Anda untuk memberikan Amazon Resource Name (ARN) ke bucket dan file Amazon S3 Anda. Format untuk ARN Anda adalah `arn:aws:s3:::bucket_name/file_name.extension`. Amazon S3 tidak memerlukan nomor akun atau AWS Wilayah di. ARNs

Jika Anda juga memberikan kunci KMS opsional, format untuk ARN kuncinya adalah `arn:aws:kms:region:account-id:key/key-id`. Untuk informasi selengkapnya, lihat [nama sumber daya Amazon (ARNs) dan ruang nama AWS layanan](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). Anda harus menggunakan kunci KMS enkripsi simetris untuk mengenkripsi cadangan Anda. Amazon RDS tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat [Membuat kunci enkripsi simetris KMS](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) di *Panduan Developer AWS Key Management Service *.

**catatan**  
Apakah Anda menggunakan kunci KMS atau tidak, tugas pencadangan dan pemulihan asli mengaktifkan enkripsi 256-bit Advanced Encryption Standard (AES) sisi server melalui SSE-S3 secara default untuk file yang diunggah ke S3. Meneruskan `@enable_bucket_default_encryption=1` ke prosedur penyimpanan cadangan menggunakan kunci enkripsi default yang dikonfigurasi bucket S3 Anda.

Untuk petunjuk bagaimana cara memanggil setiap prosedur tersimpan, lihat topik berikut:
+ [Membuat backup basis data](#SQLServer.Procedural.Importing.Native.Using.Backup)
+ [Memulihkan basis data](#SQLServer.Procedural.Importing.Native.Using.Restore)
+ [Memulihkan log](#SQLServer.Procedural.Importing.Native.Restore.Log)
+ [Menyelesaikan pemulihan basis data](#SQLServer.Procedural.Importing.Native.Finish.Restore)
+ [Bekerja dengan basis data yang dipulihkan secara parsial](#SQLServer.Procedural.Importing.Native.Partially.Restored)
+ [Membatalkan tugas](#SQLServer.Procedural.Importing.Native.Using.Cancel)
+ [Melacak status tugas](#SQLServer.Procedural.Importing.Native.Tracking)

## Membuat backup basis data
<a name="SQLServer.Procedural.Importing.Native.Using.Backup"></a>

Untuk membuat backup basis data Anda, gunakan prosedur `rds_backup_database` yang disimpan.

**catatan**  
Anda tidak dapat membuat backup basis data selama waktu pemeliharaan, atau saat Amazon RDS mengambil snapshot. 

### Penggunaan
<a name="SQLServer.Procedural.Importing.Native.Backup.Syntax"></a>

```
exec msdb.dbo.rds_backup_database
	@source_db_name='database_name',
	@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@overwrite_s3_backup_file=0|1],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'],
	[@number_of_files=n],
	[@enable_bucket_default_encryption=0|1];
```

Parameter berikut diperlukan:
+ `@source_db_name` – Nama basis data untuk dicadangkan.
+ `@s3_arn_to_backup_to`— ARN menunjukkan bucket Amazon S3, titik akses, bucket direktori, atau titik akses untuk bucket direktori yang akan digunakan untuk pencadangan, ditambah nama file cadangan.

  File dapat memiliki ekstensi apa saja, tetapi `.bak` biasanya digunakan. Perhatikan bahwa titik akses ARNs harus dalam format`arn:aws:s3:us-east-1:111122223333:access-point-name/object/key`.

Parameter berikut ini bersifat opsional:
+ `@kms_master_key_arn`— ARN untuk kunci KMS enkripsi simetris untuk digunakan untuk mengenkripsi item.
  + Anda tidak dapat menggunakan kunci enkripsi default. Jika Anda menggunakan kunci default, basis data tidak akan dicadangkan.
  +  Jika Anda tidak menentukan pengidentifikasi kunci KMS, file backup tidak akan dienkripsi. Untuk informasi selengkapnya, lihat [Mengenkripsi sumber daya Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html).
  + Saat Anda menentukan kunci KMS, enkripsi sisi klien digunakan.
  + Amazon RDS tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat [Membuat kunci enkripsi simetris KMS](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) di *Panduan Developer AWS Key Management Service *.
+ `@overwrite_s3_backup_file` – Nilai yang menunjukkan apakah file backup yang sudah ada akan ditimpa.
  + `0` – Tidak menimpa file yang ada. Nilai ini adalah default.

    Mengatur `@overwrite_s3_backup_file` ke 0 akan menghasilkan kesalahan jika file sudah ada.
  + `1` – Menimpa file yang sudah ada dengan nama yang ditentukan, meskipun itu bukan file cadangan.
+ `@type` – Jenis pencadangan.
  + `DIFFERENTIAL` – Membuat pencadangan diferensial.
  + `FULL` – Membuat backup penuh. Nilai ini adalah default.

  Pencadangan diferensial didasarkan pada backup penuh yang terakhir. Agar pencadangan diferensial berhasil, Anda tidak dapat mengambil snapshot antara backup penuh terakhir dan pencadangan diferensial. Jika Anda menginginkan pencadangan diferensial, tetapi ada snapshot, lakukan pencadangan penuh lainnya sebelum melanjutkan dengan pencadangan diferensial.

  Anda dapat mencari backup penuh atau snapshot terakhir menggunakan contoh kueri SQL berikut:

  ```
  select top 1
  database_name
  , 	backup_start_date
  , 	backup_finish_date
  from    msdb.dbo.backupset
  where   database_name='mydatabase'
  and     type = 'D'
  order by backup_start_date desc;
  ```
+ `@number_of_files` – Jumlah file yang menjadi tempat di mana backup akan terbagi (terpotong). Jumlah maksimum adalah 10.
  + Pencadangan multi-file didukung untuk backup penuh dan pencadangan diferensial.
  + Jika Anda memasukkan nilai 1 atau menghilangkan parameter, akan dibuat file backup tunggal.

  Berikan awalan yang sama-sama dimiliki beberapa file tersebut, lalu akhiri dengan tanda bintang (`*`). Tanda bintang dapat berada di mana saja di *file\$1name* bagian S3 ARN. Tanda bintang diganti dengan serangkaian string alfanumerik dalam file yang dihasilkan, dimulai dengan `1-of-number_of_files`.

  Misalnya, jika nama file pada S3 ARN adalah `backup*.bak` dan Anda mengatur `@number_of_files=4`, file backup yang dihasilkan adalah `backup1-of-4.bak`, `backup2-of-4.bak`, `backup3-of-4.bak`, dan `backup4-of-4.bak`.
  + Jika salah satu nama file sudah ada, dan `@overwrite_s3_backup_file` adalah 0, akan muncul kesalahan.
  + Cadangan multifile hanya dapat memiliki satu tanda bintang di *file\$1name* bagian S3 ARN.
  + Cadangan file tunggal dapat memiliki sejumlah tanda bintang di bagian S3 ARN*file\$1name*. Tanda bintang tidak dihapus dari nama file yang dihasilkan.
+ `@block_size`— Ukuran blok (dalam byte) yang menentukan ukuran blok fisik untuk operasi cadangan. Nilai yang valid adalah 512, 1024, 2048, 4096, 8192, 16384, 32768, dan 65536
+ `@max_transfer_size`Ukuran transfer maksimum menunjukkan batas atas volume data (dalam byte) yang ditransmisikan per I/O operasi selama proses pencadangan. Nilai yang valid adalah kelipatan 65536 byte (64 KB) hingga 4194304 byte (4 MB). 
+ `@buffer_count`— Jumlah total I/O buffer yang akan digunakan untuk proses pencadangan.
+ `@enable_bucket_default_encryption`— Nilai yang menunjukkan apakah akan menggunakan konfigurasi enkripsi default bucket S3 untuk enkripsi sisi server di S3. Bucket direktori selalu menggunakan konfigurasi enkripsi default bucket terlepas dari pengaturan ini.
  + `0`— Enkripsi sisi server menggunakan enkripsi 256-bit Advanced Encryption Standard (AES) melalui SSE-S3.
  + `1`[— Enkripsi sisi server menggunakan enkripsi default yang dikonfigurasi bucket S3 Anda.](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-encryption.html) 

### Contoh
<a name="SQLServer.Procedural.Importing.Native.Backup.Examples"></a>

**Example dari pencadangan diferensial**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@overwrite_s3_backup_file=1,
@type='DIFFERENTIAL';
```

**Example cadangan penuh dengan enkripsi sisi klien**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example dari pencadangan multi-file**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4;
```

**Example dari pencadangan diferensial multi-file**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
```

**Example dari pencadangan multi-file dengan enkripsi**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@number_of_files=4;
```

**Example dari pencadangan multi-file dengan penimpaan S3**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@number_of_files=4;
```

**Example cadangan dengan ukuran blok**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@block_size=512;
```

**Example cadangan multifile dengan `@max_transfer_size` dan `@buffer_count`**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4,
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example dari pencadangan file tunggal dengan parameter @number\$1of\$1files**  
Contoh ini menghasilkan file backup dengan nama `backup*.bak`.  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=1;
```

**Example cadangan penuh dengan enkripsi sisi server**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@type='FULL',
@enable_bucket_default_encryption=1;
```

**Example cadangan penuh menggunakan titik akses**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example cadangan penuh menggunakan titik akses untuk ember direktori**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3express:us-east-1:123456789012:accesspoint/my-access-point--use1-az6--xa-s3/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

## Memulihkan basis data
<a name="SQLServer.Procedural.Importing.Native.Using.Restore"></a>

Untuk memulihkan basis data Anda, panggil prosedur tersimpan `rds_restore_database`. Amazon RDS membuat snapshot awal basis data setelah tugas pemulihan selesai dan basis data terbuka.

### Penggunaan
<a name="SQLServer.Procedural.Importing.Native.Restore.Syntax"></a>

```
exec msdb.dbo.rds_restore_database
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension',
	@with_norecovery=0|1,
	[@keep_cdc=0|1],
	[@data_file_volume='D:|H:|I:|J:'],
	[@log_file_volume='D:|H:|I:|J:'],
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
        [@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'];
```

Parameter berikut diperlukan:
+ `@restore_db_name` – Nama basis data yang akan dipulihkan. Nama basis data bersifat unik. Anda tidak dapat memulihkan basis data dengan nama yang sama seperti basis data yang sudah ada.
+ `@s3_arn_to_restore_from` – ARN yang menunjukkan prefiks Amazon S3 dan nama file backup yang digunakan untuk memulihkan basis data.
  + Untuk pencadangan file tunggal, berikan seluruh nama file.
  + Berikan awalan yang sama-sama dimiliki beberapa file tersebut, lalu akhiri dengan tanda bintang (`*`).
    + Jika menggunakan bucket direktori, ARN harus diakhiri `/*` karena [perbedaan untuk bucket direktori](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html).
  + Jika `@s3_arn_to_restore_from` kosong, pesan kesalahan berikut dikembalikan: Awalan ARN S3 tidak boleh kosong.

Parameter berikut ini diperlukan untuk pemulihan diferensial, tetapi opsional untuk pemulihan penuh:
+ `@with_norecovery` – Klausul pemulihan yang digunakan untuk operasi pemulihan.
  + Atur ke `0` untuk memulihkan dengan RECOVERY. Dalam hal ini, basis data sedang online setelah pemulihan.
  + Atur ke `1` untuk memulihkan dengan NORECOVERY. Dalam hal ini, basis data tetap dalam status RESTORING setelah tugas pemulihan selesai. Dengan pendekatan ini, Anda dapat melakukan pemulihan diferensial berikutnya.
  + Untuk pemulihan DIFFERENTIAL, tentukan `0` atau `1`.
  + Untuk pemulihan `FULL`, nilai ini default menjadi `0`.

Parameter berikut ini bersifat opsional:
+ `@keep_cdc`— Menunjukkan apakah akan mempertahankan konfigurasi Change Data Capture (CDC) pada database yang dipulihkan. Setel `1` untuk mengaktifkan KEEP\$1CDC, untuk menonaktifkan. `0` Nilai default-nya adalah `0`.
+ `@data_file_volume`- Menentukan huruf drive untuk file data database. Nilai default-nya adalah `D:`.
+ `@log_file_volume`— Menentukan huruf drive untuk file log database Nilai default adalah`D:`.
+ `@kms_master_key_arn` — Jika Anda mengenkripsi file backup, kunci KMS digunakan untuk mendekripsi file.

  Saat Anda menentukan kunci KMS, enkripsi sisi klien digunakan.
+ `@type` – Jenis pemulihan. Nilai yang valid adalah `DIFFERENTIAL` dan `FULL`. Nilai default-nya adalah `FULL`.
+ `@block_size`— Ukuran blok (dalam byte) yang menentukan ukuran blok fisik untuk operasi cadangan. Nilai yang valid adalah 512, 1024, 2048, 4096, 8192, 16384, 32768, dan 65536
+ `@max_transfer_size`Ukuran transfer maksimum menunjukkan batas atas volume data (dalam byte) yang ditransmisikan per I/O operasi selama proses pencadangan. Nilai yang valid adalah kelipatan 65536 byte (64 KB) hingga 4194304 byte (4 MB). 
+ `@buffer_count`— Jumlah total I/O buffer yang akan digunakan untuk proses pencadangan.

**catatan**  
Untuk pemulihan diferensial, basis data harus berada dalam status RESTORING atau harus ada tugas yang memulihkan dengan NORECOVERY.  
Anda tidak dapat memulihkan pencadangan diferensial di masa mendatang saat basis data online.  
Anda tidak dapat mengirimkan tugas pemulihan untuk basis data yang sudah memiliki tugas pemulihan tertunda dengan RECOVERY.  
Pemulihan penuh dengan NORECOVERY dan KEEP\$1CDC tidak didukung.  
Semua pemulihan asli tidak didukung pada instance yang memiliki replika baca lintas wilayah.  
Untuk konfigurasi yang didukung, memulihkan database pada instance Multi-AZ dengan replika baca mirip dengan memulihkan database pada instance Multi-AZ. Anda tidak perlu mengambil tindakan tambahan apa pun untuk memulihkan basis data di replika.

### Contoh
<a name="SQLServer.Procedural.Importing.Native.Restore.Examples"></a>

**Example dari pemulihan file tunggal**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

**Example dari pemulihan multi-file**  
Untuk menghindari kesalahan saat memulihkan beberapa file, pastikan semua file backup memiliki awalan yang sama, dan tidak ada file lain yang menggunakan awalan tersebut.  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
```

**Example dari pemulihan basis data penuh dengan RECOVERY**  
Tiga contoh berikut ini melakukan tugas yang sama, pemulihan penuh dengan RECOVERY.  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
[@type='DIFFERENTIAL|FULL'];
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=0;
```

**Example dari pemulihan basis data penuh dengan enkripsi**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example mengembalikan dengan ukuran blok**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@block_size=512;
```

**Example pemulihan multifile dengan @max\$1transfer\$1size dan @buffer\$1count**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*',
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example dari pemulihan basis data penuh dengan NORECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=1;
```

**Example dari pemulihan diferensial dengan NORECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
```

**Example dari pemulihan diferensial dengan RECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=0;
```

**Example pemulihan basis data lengkap dengan RECOVERY menggunakan titik akses**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@with_norecovery=0;
```

**Example pemulihan database lengkap dengan KEEP\$1CDC**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## Memulihkan log
<a name="SQLServer.Procedural.Importing.Native.Restore.Log"></a>

Untuk memulihkan basis data Anda, panggil prosedur `rds_restore_log` yang disimpan.

### Penggunaan
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Syntax"></a>

```
exec msdb.dbo.rds_restore_log 
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
	[@with_norecovery=0|1],
	[@keep_cdc=0|1],
	[@stopat='datetime'],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n];
```

Parameter berikut diperlukan:
+ `@restore_db_name` – Nama basis data yang lognya akan dipulihkan.
+ `@s3_arn_to_restore_from` – ARN menunjukkan awalan Amazon S3 dan nama file log yang digunakan untuk memulihkan log. File dapat memiliki ekstensi apa saja, tetapi `.trn` biasanya digunakan.

  Jika `@s3_arn_to_restore_from` kosong, pesan kesalahan berikut dikembalikan: Awalan ARN S3 tidak boleh kosong.

Parameter berikut ini bersifat opsional:
+ `@keep_cdc`— Menunjukkan apakah akan mempertahankan konfigurasi Change Data Capture (CDC) pada database yang dipulihkan. Setel ke 1 untuk mengaktifkan KEEP\$1CDC, 0 untuk menonaktifkan. Nilai default-nya adalah 0.
+ `@kms_master_key_arn` — Jika Anda mengenkripsi log, kunci KMS digunakan untuk mendekripsi log.
+ `@with_norecovery` – Klausul pemulihan yang digunakan untuk operasi pemulihan. Nilai ini default menjadi `1`.
  + Atur ke `0` untuk memulihkan dengan RECOVERY. Dalam hal ini, basis data sedang online setelah pemulihan. Anda tidak dapat memulihkan backup log lebih lanjut saat basis data sedang online.
  + Atur ke `1` untuk memulihkan dengan NORECOVERY. Dalam hal ini, basis data tetap dalam status RESTORING setelah tugas pemulihan selesai. Dengan pendekatan ini, Anda dapat melakukan pemulihan log berikutnya.
+ `@stopat` – Nilai yang menentukan bahwa basis data dipulihkan ke statusnya pada tanggal dan waktu yang ditentukan (dalam format tanggal). Hanya catatan log transaksi yang ditulis sebelum tanggal dan waktu yang ditentukan diterapkan ke basis data.

  Jika parameter ini tidak ditentukan (NULL), log lengkap dipulihkan.
+ `@block_size`— Ukuran blok (dalam byte) yang menentukan ukuran blok fisik untuk operasi cadangan. Nilai yang valid adalah 512, 1024, 2048, 4096, 8192, 16384, 32768, dan 65536
+ `@max_transfer_size`Ukuran transfer maksimum menunjukkan batas atas volume data (dalam byte) yang ditransmisikan per I/O operasi selama proses pencadangan. Nilai yang valid adalah kelipatan 65536 byte (64 KB) hingga 4194304 byte (4 MB). 
+ `@buffer_count`— Jumlah total I/O buffer yang akan digunakan untuk proses pencadangan.

**catatan**  
Untuk pemulihan log, basis data harus dalam keadaan memulihkan atau tugas yang memulihkan dengan NORECOVERY harus sudah ada.  
Anda tidak dapat memulihkan backup log saat basis data sedang online.  
Anda tidak dapat mengirimkan tugas pemulihan di basis data yang sudah memiliki tugas pemulihan tertunda dengan RECOVERY.

### Contoh
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Examples"></a>

**Example dari pemulihan log**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example dari pemulihan log dengan enkripsi**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example dari pemulihan log dengan NORECOVERY**  
Dua contoh berikut melakukan tugas yang sama, pemulihan log dengan NORECOVERY.  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=1;
```

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example mengembalikan dengan ukuran blok**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@block_size=512;
```

**Example dari pemulihan log dengan RECOVERY**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0;
```

**Example dari pemulihan log dengan klausul STOPAT**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0,
@stopat='2019-12-01 03:57:09';
```

**Example pemulihan log dengan KEEP\$1CDC**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## Menyelesaikan pemulihan basis data
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore"></a>

Jika tugas pemulihan terakhir pada basis data dilakukan menggunakan `@with_norecovery=1`, basis data sekarang dalam status RESTORING. Buka basis data ini untuk operasi normal dengan menggunakan prosedur tersimpan `rds_finish_restore`.

### Penggunaan
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax"></a>

```
exec msdb.dbo.rds_finish_restore @db_name='database_name';
```

**catatan**  
Untuk menggunakan pendekatan ini, basis data harus berada dalam status RESTORING tanpa ada tugas pemulihan yang tertunda.  
Untuk menyelesaikan pemulihan basis data, gunakan master login. Atau gunakan login pengguna terbaru yang memulihkan basis data atau log dengan NORECOVERY.

## Bekerja dengan basis data yang dipulihkan secara parsial
<a name="SQLServer.Procedural.Importing.Native.Partially.Restored"></a>

### Menghilangkan basis data yang dipulihkan parsial
<a name="SQLServer.Procedural.Importing.Native.Drop.Partially.Restored"></a>

Untuk melepaskan basis data yang dipulihkan parsial (dibiarkan dalam status RESTORING), gunakan prosedur tersimpan `rds_drop_database`.

```
exec msdb.dbo.rds_drop_database @db_name='database_name';
```

**catatan**  
Anda tidak dapat mengirimkan permintaan DROP basis data untuk basis data yang sudah memiliki tugas pemulihan tertunda atau sudah menyelesaikan tugas pemulihan.  
Untuk melepaskan basis data, gunakan master login. Atau gunakan login pengguna terbaru yang memulihkan basis data atau log dengan NORECOVERY.

### Perilaku pemulihan dan point-in-time pemulihan snapshot untuk database yang dipulihkan sebagian
<a name="SQLServer.Procedural.Importing.Native.Snapshot.Restore"></a>

Database yang dipulihkan sebagian dalam instance sumber (dibiarkan dalam status RESTORING) dijatuhkan dari instance target selama pemulihan dan pemulihan snapshot. point-in-time

## Membatalkan tugas
<a name="SQLServer.Procedural.Importing.Native.Using.Cancel"></a>

Untuk membatalkan tugas pencadangan atau pemulihan, panggil prosedur yang tersimpan `rds_cancel_task`.

**catatan**  
Anda tidak dapat membatalkan tugas FINISH\$1RESTORE.

### Penggunaan
<a name="SQLServer.Procedural.Importing.Native.Cancel.Syntax"></a>

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

Parameter berikut diperlukan:
+ `@task_id` – ID tugas yang dibatalkan. Anda bisa mendapatkan ID tugas dengan memanggil `rds_task_status`. 

## Melacak status tugas
<a name="SQLServer.Procedural.Importing.Native.Tracking"></a>

Untuk melacak status tugas pencadangan dan pemulihan Anda, panggil prosedur tersimpan `rds_task_status`. Jika Anda tidak memberikan parameter apa pun, prosedur yang tersimpan akan memperlihatkan status semua tugas. Status tugas diperbarui kira-kira setiap dua menit sekali. Riwayat tugas disimpan selama 36 hari.

### Penggunaan
<a name="SQLServer.Procedural.Importing.Native.Tracking.Syntax"></a>

```
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 untuk menunjukkan status tugas.

### Contoh
<a name="SQLServer.Procedural.Importing.Native.Tracking.Examples"></a>

**Example untuk menyusun daftar status untuk tugas tertentu**  

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

**Example untuk menyusun daftar status untuk basis data dan tugas tertentu**  

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

**Example untuk menyusun daftar semua tugas dan statusnya di basis data tertentu**  

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

**Example untuk menyusun daftar semua tugas dan statusnya di instans saat ini**  

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

### Respons
<a name="SQLServer.Procedural.Importing.Native.Tracking.Response"></a>

Prosedur tersimpan `rds_task_status` memunculkan kolom berikut.


****  

| Kolom | Deskripsi | 
| --- | --- | 
| `task_id` |  ID tugas.   | 
| `task_type` |  Jenis tugas tergantung pada parameter input, sebagai berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html) Amazon RDS membuat snapshot awal basis data setelah basis data terbuka saat menyelesaikan tugas pemulihan berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `database_name` |  Nama basis data yang terkait dengan tugas.   | 
| `% complete` |  Kemajuan tugas sebagai nilai persen.   | 
| `duration (mins)` |  Durasi yang dihabiskan untuk tugas, dalam menit.   | 
| `lifecycle` |  Status tugas. Status yang mungkin adalah sebagai berikut:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `task_info` |  Informasi tambahan tentang tugas.  Jika terjadi kesalahan saat membuat backup atau memulihkan basis data, kolom ini berisi informasi tentang kesalahan tersebut. Untuk daftar kesalahan yang mungkin terjadi, dan strategi mitigasinya, lihat [Pemecahan Masalah](SQLServer.Procedural.Importing.Native.Troubleshooting.md).   | 
| `last_updated` |  Tanggal dan waktu status tugas terakhir diperbarui. Status akan diperbarui setelah setiap 5 persen kemajuan.  | 
| `created_at` | Tanggal dan waktu tugas dibuat. | 
| S3\$1object\$1arn | ARN menunjukkan awalan Amazon S3 dan nama file yang sedang dicadangkan atau dipulihkan. | 
| `overwrite_s3_backup_file` |  Nilai dari parameter `@overwrite_s3_backup_file` yang ditentukan saat memanggil tugas pencadangan. Untuk informasi selengkapnya, lihat [Membuat backup basis data](#SQLServer.Procedural.Importing.Native.Using.Backup).  | 
| KMS\$1master\$1key\$1arn | ARN untuk kunci KMS yang digunakan untuk enkripsi (untuk pencadangan) dan dekripsi (untuk pemulihan). | 
| filepath | Tidak berlaku untuk tugas pencadangan native dan pemulihan native. | 
| overwrite\$1file | Tidak berlaku untuk tugas pencadangan native dan pemulihan native. | 

# Mengompresi file backup
<a name="SQLServer.Procedural.Importing.Native.Compression"></a>

Untuk menghemat ruang di bucket Amazon S3, Anda dapat mengompresi file backup. Untuk informasi selengkapnya tentang pengompresan file backup, lihat [Backup compression](https://msdn.microsoft.com/en-us/library/bb964719.aspx) dalam dokumentasi Microsoft. 

Pengompresan file backup didukung untuk edisi basis data berikut: 
+ Edisi Perusahaan Microsoft SQL Server 
+ Edisi Standar Microsoft SQL Server 

Untuk memverifikasi opsi kompresi untuk file cadangan Anda, jalankan kode berikut:

```
1. exec rdsadmin.dbo.rds_show_configuration 'S3 backup compression';
```

Untuk mengaktifkan kompresi untuk file backup Anda, jalankan kode berikut:

```
1. exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'true';
```

Untuk mengaktifkan kompresi untuk file backup Anda, jalankan kode berikut: 

```
1. exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'false';
```

# Pemecahan Masalah
<a name="SQLServer.Procedural.Importing.Native.Troubleshooting"></a>

Berikut adalah masalah yang mungkin Anda hadapi saat menggunakan pencadangan native dan pemulihan native.


****  

| Masalah | Saran pemecahan masalah | 
| --- | --- | 
|  Opsi pencadangan/pemulihan basis data belum diaktifkan atau sedang dalam proses diaktifkan. Silakan di coba lagi nanti.  |  Pastikan Anda telah menambahkan opsi `SQLSERVER_BACKUP_RESTORE` ke grup opsi DB yang terkait dengan instans DB Anda. Untuk informasi selengkapnya, lihat [Menambahkan opsi pencadangan dan pemulihan native](Appendix.SQLServer.Options.BackupRestore.md#Appendix.SQLServer.Options.BackupRestore.Add).  | 
|  Izin EXECUTE ditolak pada objek '', database *rds\$1backup\$1database* 'msdb', skema 'dbo'.  |  Pastikan Anda menggunakan pengguna master saat menjalankan prosedur yang disimpan. Jika Anda mengalami kesalahan ini bahkan setelah masuk sebagai pengguna utama, itu mungkin karena izin pengguna admin tidak sejajar. Untuk mengatur ulang pengguna master, gunakan file Konsol Manajemen AWS. Lihat [Menyetel ulang keanggotaan peran db\$1owner untuk pengguna master untuk Amazon RDS for SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   | 
|  Izin EXECUTE ditolak pada objek '', database *rds\$1restore\$1database* 'msdb', skema 'dbo'.  |  Pastikan Anda menggunakan pengguna master saat menjalankan prosedur yang disimpan. Jika Anda mengalami kesalahan ini bahkan setelah masuk sebagai pengguna utama, itu mungkin karena izin pengguna admin tidak sejajar. Untuk mengatur ulang pengguna master, gunakan file Konsol Manajemen AWS. Lihat [Menyetel ulang keanggotaan peran db\$1owner untuk pengguna master untuk Amazon RDS for SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   | 
|  Akses Ditolak  | Proses pencadangan atau pemulihan tidak dapat mengakses file backup. Hal ini biasanya disebabkan oleh masalah seperti berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Troubleshooting.html)  | 
|  BACKUP basis data WITH COMPRESSION tidak didukung pada Edisi <edition\$1name>  |  Mengompresi file backup Anda hanya didukung untuk Edisi Perusahaan dan Edisi Standar Microsoft SQL Server. Untuk informasi selengkapnya, lihat [Mengompresi file backup](SQLServer.Procedural.Importing.Native.Compression.md).   | 
|  Kunci <ARN> tidak ada  |  Anda mencoba memulihkan backup terenkripsi, tetapi tidak menyediakan kunci enkripsi yang valid. Periksa kunci enkripsi Anda dan coba lagi. Untuk informasi selengkapnya, lihat [Memulihkan basis data](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore).   | 
|  Silakan menerbitkan ulang tugas dengan properti ketik dan timpa yang benar  |  Jika Anda mencoba membuat backup basis data dan memberikan nama file yang sudah ada, tetapi mengatur properti overwrite ke false, operasi penyimpanan gagal. Untuk memperbaiki kesalahan ini, berikan nama file yang belum ada, atau atur properti overwrite ke true. Untuk informasi selengkapnya, lihat [Membuat backup basis data](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Backup). Mungkin saja Anda ingin memulihkan basis data Anda, tetapi memanggil prosedur tersimpan `rds_backup_database` secara tidak sengaja. Dalam hal ini, panggil prosedur tersimpan `rds_restore_database`. Untuk informasi selengkapnya, lihat [Memulihkan basis data](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore). Jika Anda ingin memulihkan basis data dan memanggil prosedur tersimpan `rds_restore_database`, pastikan bahwa Anda memberikan nama file backup yang valid. Untuk informasi selengkapnya, lihat [Menggunakan pencadangan dan pemulihan native](SQLServer.Procedural.Importing.Native.Using.md).  | 
|  Silakan tentukan bucket yang berada di wilayah yang sama dengan instans RDS  |  Anda tidak dapat mencadangkan, atau memulihkan dari, bucket Amazon S3 di AWS Wilayah lain dari instans Amazon RDS DB Anda. Anda dapat menggunakan replikasi Amazon S3 untuk menyalin file cadangan ke Wilayah yang benar. AWS  Untuk informasi lebih lanjut, lihat [Replikasi Lintas Wilayah](https://docs.aws.amazon.com/AmazonS3/latest/userguide/crr.html) dalam dokumentasi Amazon S3.  | 
|  Bucket yang ditentukan tidak ada  | Pastikan bahwa Anda telah memberikan ARN yang benar untuk bucket dan file Anda, dalam format yang benar.  Untuk informasi selengkapnya, lihat [Menggunakan pencadangan dan pemulihan native](SQLServer.Procedural.Importing.Native.Using.md).  | 
|  Pengguna <ARN> tidak berwenang untuk melakukan <kms action> pada sumber daya <ARN>  |  Anda meminta operasi terenkripsi, tetapi tidak memberikan izin yang benar AWS KMS . Verifikasi bahwa Anda memiliki izin yang benar, atau tambahkan.  Untuk informasi selengkapnya, lihat [Menyiapkan pencadangan dan pemulihan native](SQLServer.Procedural.Importing.Native.Enabling.md).  | 
|  Tugas Pemulihan tidak dapat memulihkan dari lebih dari 10 file backup. Kurangi jumlah file yang dicocokkan dan coba lagi.  |  Kurangi jumlah file yang ingin Anda gunakan untuk pemulihan. Anda dapat menjadikan setiap file lebih besar kalau perlu.  | 
|  Database *database\$1name* '' sudah ada. Dua basis data yang berbeda besar huruf atau aksen tidak diperbolehkan. Pilih nama basis data yang berbeda.  |  Anda tidak dapat memulihkan basis data dengan nama yang sama seperti basis data yang sudah ada. Nama basis data bersifat unik.  | 

# Mengimpor dan mengekspor data SQL Server menggunakan metode lain
<a name="SQLServer.Procedural.Importing.Snapshots"></a>

Selanjutnya, Anda dapat menemukan informasi tentang penggunaan snapshot untuk mengimpor data Microsoft SQL Server Anda ke Amazon RDS. Anda juga dapat menemukan informasi tentang penggunaan snapshot untuk mengekspor data Anda dari instans DB RDS yang menjalankan SQL Server. 

Jika skenario Anda mendukung, lebih mudah untuk memindahkan data ke dan dari Amazon RDS dengan menggunakan fungsi pencadangan native dan pemulihan native. Untuk informasi selengkapnya, lihat [Mengimpor dan mengekspor basis data SQL Server menggunakan pencadangan dan pemulihan native](SQLServer.Procedural.Importing.md). 

**catatan**  
Amazon RDS for Microsoft SQL Server tidak mendukung impor data ke basis data `msdb`. 

## Mengimpor data ke RDS for SQL Server dengan menggunakan snapshot
<a name="SQLServer.Procedural.Importing.Procedure"></a>

**Untuk mengimpor data ke dalam instans DB SQL Server dengan menggunakan snapshot**

1. Buat instans DB. Untuk informasi selengkapnya, lihat [Membuat instans DB Amazon RDS](USER_CreateDBInstance.md).

1. Hentikan aplikasi dari mengakses instans DB tujuan. 

   Jika Anda mencegah akses ke instans DB saat mengimpor data, transfer data akan lebih cepat. Selain itu, Anda tidak perlu khawatir tentang konflik ketika data sedang dimuat jika aplikasi lain tidak dapat menulis ke instans DB pada waktu yang sama. Jika ada yang salah dan Anda harus kembali ke snapshot basis data sebelumnya, satu-satunya perubahan yang hilang adalah data hasil impor. Anda dapat mengimpor data ini kembali setelah Anda menyelesaikan masalah. 

   Untuk informasi tentang mengendalikan akses ke instans DB Anda, lihat [Mengontrol akses dengan grup keamanan](Overview.RDSSecurityGroups.md). 

1. Buat snapshot basis data target. 

   Jika basis data target sudah terisi data, kami menyarankan agar Anda mengambil snapshot basis data sebelum Anda melakukan impor data. Jika ada yang salah dalam impor data atau Anda ingin membuang perubahan, Anda dapat memulihkan basis data ke status sebelumnya dengan menggunakan snapshot. Untuk informasi tentang snapshot basis data, lihat [Membuat snapshot DB untuk instans DB AZ tunggal untuk Amazon RDS](USER_CreateSnapshot.md). 
**catatan**  
Saat Anda mengambil snapshot database, I/O operasi ke database ditangguhkan sesaat (milidetik) saat pencadangan sedang berlangsung. 

1. Nonaktifkan pencadangan otomatis pada basis data target. 

   Menonaktifkan pencadangan otomatis pada instans DB target akan meningkatkan performa saat Anda mengimpor data Anda karena Amazon RDS tidak mencatat transaksi ketika pencadangan otomatis dinonaktifkan. Namun, ada beberapa hal yang perlu dipertimbangkan. Pencadangan otomatis diperlukan untuk melakukan pemulihan. point-in-time Dengan demikian, Anda tidak dapat memulihkan basis data ke titik waktu tertentu saat Anda melakukan impor data. Selain itu, semua pencadangan otomatis yang dibuat di instans DB akan dihapus kecuali jika Anda memilih untuk menyimpannya. 

   Memilih untuk menyimpan pencadangan otomatis dapat membantu melindungi Anda dari menghapus data secara tidak sengaja. Amazon RDS juga menyimpan properti instans basis data bersamaan dengan setiap pencadangan otomatis agar mudah dipulihkan. Menggunakan opsi ini memungkinkan Anda memulihkan instance database yang dihapus ke titik waktu tertentu dalam periode retensi cadangan bahkan setelah menghapusnya. Pencadangan otomatis secara otomatis dihapus di akhir waktu backup yang ditentukan, seperti halnya untuk instans basis data aktif. 

   Anda juga dapat menggunakan snapshot sebelumnya untuk memulihkan basis data, dan semua snapshot yang Anda ambil tetap tersedia. Untuk mengetahui informasi tentang pencadangan otomatis, lihat [Pengantar cadangan](USER_WorkingWithAutomatedBackups.md). 

1. Nonaktifkan batasan kunci asing, jika berlaku. 

    Jika Anda perlu menonaktifkan batasan kunci asing, Anda dapat melakukannya dengan skrip berikut. 

   ```
   --Disable foreign keys on all tables
       DECLARE @table_name SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
       
       OPEN table_cursor;
       FETCH NEXT FROM table_cursor INTO @table_name;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' NOCHECK CONSTRAINT ALL';
         EXEC (@cmd);
         FETCH NEXT FROM table_cursor INTO @table_name;
       END
       
       CLOSE table_cursor;
       DEALLOCATE table_cursor;
       
       GO
   ```

1. Lepaskan indeks, jika berlaku. 

1. Nonaktifkan pemicu, jika berlaku. 

    Jika Anda perlu menonaktifkan pemicu, Anda dapat melakukannya dengan skrip berikut. 

   ```
   --Disable triggers on all tables
       DECLARE @enable BIT = 0;
       DECLARE @trigger SYSNAME;
       DECLARE @table SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
        table_object.name table_name
       FROM sysobjects trigger_object
       JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
       WHERE trigger_object.type = 'TR';
       
       OPEN trigger_cursor;
       FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         IF @enable = 1
            SET @cmd = 'ENABLE ';
         ELSE
            SET @cmd = 'DISABLE ';
       
         SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTENAME(@table)+' ';
         EXEC (@cmd);
         FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       END
       
       CLOSE trigger_cursor;
       DEALLOCATE trigger_cursor;
       
       GO
   ```

1. Kueri sumber instans SQL Server untuk setiap login yang ingin Anda impor ke instans DB tujuan. 

   SQL Server menyimpan login dan kata sandi di basis data `master`. Karena Amazon RDS tidak memberikan akses ke basis data `master`, Anda tidak dapat langsung melakukan impor login dan kata sandi ke instans DB tujuan Anda. Sebaliknya, Anda harus kueri basis data `master` pada sumber instans SQL Server untuk membuat file data definition language (DDL). File ini harus mencakup semua login dan kata sandi yang ingin Anda tambahkan ke instans DB tujuan. File ini juga harus menyertakan keanggotaan peran dan izin yang ingin Anda transfer. 

   Untuk informasi tentang kueri `master` database, lihat [Mentransfer login dan kata sandi antar instance SQL Server di](https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/security/transfer-logins-passwords-between-instances) Pangkalan Pengetahuan Microsoft.

   Output dari skrip tersebut adalah skrip lain yang dapat Anda jalankan di instans DB tujuan. Script dalam artikel Knowledge Base memiliki kode berikut: 

   ```
   p.type IN 
   ```

   Setiap tempat `p.type` muncul, gunakan kode berikut ini: 

   ```
   p.type = 'S' 
   ```

1. Impor data menggunakan metode di [Mengimpor data](#ImportData.SQLServer.Import). 

1. Berikan akses aplikasi ke instans DB target. 

   Setelah impor data selesai, Anda dapat memberikan akses ke instans DB pada aplikasi yang Anda blokir selama impor. Untuk informasi tentang mengendalikan akses ke instans DB Anda, lihat [Mengontrol akses dengan grup keamanan](Overview.RDSSecurityGroups.md). 

1. Aktifkan pencadangan otomatis pada instans DB target. 

   Untuk mengetahui informasi tentang pencadangan otomatis, lihat [Pengantar cadangan](USER_WorkingWithAutomatedBackups.md). 

1. Aktifkan batasan kunci asing. 

    Jika Anda menonaktifkan batasan kunci asing sebelumnya, sekarang Anda dapat mengaktifkannya dengan skrip berikut. 

   ```
   --Enable foreign keys on all tables
       DECLARE @table_name SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
       
       OPEN table_cursor;
       FETCH NEXT FROM table_cursor INTO @table_name;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' CHECK CONSTRAINT ALL';
         EXEC (@cmd);
         FETCH NEXT FROM table_cursor INTO @table_name;
       END
       
       CLOSE table_cursor;
       DEALLOCATE table_cursor;
   ```

1. Aktifkan indeks, jika berlaku.

1. Aktifkan pemicu, jika berlaku.

    Jika Anda menonaktifkan pemicu sebelumnya, sekarang Anda dapat mengaktifkannya dengan skrip berikut. 

   ```
   --Enable triggers on all tables
       DECLARE @enable BIT = 1;
       DECLARE @trigger SYSNAME;
       DECLARE @table SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
        table_object.name table_name
       FROM sysobjects trigger_object
       JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
       WHERE trigger_object.type = 'TR';
       
       OPEN trigger_cursor;
       FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         IF @enable = 1
            SET @cmd = 'ENABLE ';
         ELSE
            SET @cmd = 'DISABLE ';
       
         SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTENAME(@table)+' ';
         EXEC (@cmd);
         FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       END
       
       CLOSE trigger_cursor;
       DEALLOCATE trigger_cursor;
   ```

### Mengimpor data
<a name="ImportData.SQLServer.Import"></a>

Microsoft SQL Server Management Studio adalah klien SQL Server grafis yang disertakan dalam semua edisi Microsoft SQL Server kecuali Edisi Ekspres. SQL Server Management Studio Express tersedia dari Microsoft sebagai unduhan gratis. Untuk menemukan unduhan ini, lihat [situs web Microsoft](https://www.microsoft.com/en-us/download). 

**catatan**  
SQL Server Management Studio hanya tersedia sebagai aplikasi berbasis Windows.

SQL Server Management Studio mencakup alat-alat berikut, yang berguna dalam melakukan impor data ke instans DB SQL Server: 
+ Wizard Membuat dan Menerbitkan Skrip
+ Wizard Impor dan Ekspor
+ Penyalinan massal

#### Wizard Membuat dan Menerbitkan Skrip
<a name="ImportData.SQLServer.MgmtStudio.ScriptWizard"></a>

Wizard Membuat dan Menerbitkan Skrip membuat skrip yang berisi skema basis data, data itu sendiri, atau keduanya. Anda dapat membuat skrip untuk basis data dalam deployment SQL Server lokal Anda. Kemudian, Anda dapat menjalankan skrip untuk mentransfer informasi yang dimuat ke instans DB Amazon RDS. 

**catatan**  
Untuk basis data sebesar 1 GiB atau lebih besar, lebih efisien jika hanya membuat skrip skema basis data. Anda kemudian menggunakan Wizard Impor dan Ekspor atau fitur penyalinan massal dari SQL Server untuk mentransfer data.

Untuk informasi terperinci tentang Wizard Membuat dan Menerbitkan Skrip, lihat [Dokumentasi Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms178078%28v=sql.105%29.aspx). 

Di dalam wizard, perhatikan dengan cermat opsi lanjutan pada halaman **Tetapkan Opsi Pembuatan Skrip** untuk memastikan bahwa semua yang Anda inginkan dalam skrip Anda sudah dipilih. Misalnya, secara default, pemicu basis data tidak disertakan dalam skrip.

Saat skrip dibuat dan disimpan, Anda dapat menggunakan SQL Server Management Studio untuk membuat koneksi ke instans DB Anda lalu menjalankan skrip tersebut.

#### Wizard Impor dan Ekspor
<a name="ImportData.SQLServer.MgmtStudio.ImportExportWizard"></a>

Wizard Impor dan Ekspor membuat paket Layanan Integrasi khusus, yang dapat Anda gunakan untuk menyalin data dari basis data SQL Server lokal Anda ke instans DB tujuan. Wizard dapat menyaring tabel mana dan bahkan tuple mana dalam tabel yang disalin ke instans DB tujuan.

**catatan**  
Wizard Impor dan Ekspor berfungsi dengan baik untuk set data besar, tapi mungkin bukan cara tercepat untuk melakukan ekspor data jarak jauh dari deployment lokal Anda. Untuk cara yang lebih cepat, pertimbangkan fitur penyalinan massal SQL Server.

Untuk informasi terperinci tentang Wizard Impor dan Ekspor, lihat [Dokumentasi Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms140052%28v=sql.105%29.aspx).

Dalam wizard, di halaman **Pilih Tujuan**, lakukan hal berikut:
+ Untuk **Nama Server**, ketik nama titik akhir untuk instans DB Anda.
+ Untuk mode autentikasi server, pilih **Gunakan Autentikasi SQL Server**.
+ Untuk **Nama pengguna** dan **Kata Sandi**, ketik kredensial untuk pengguna utama yang Anda buat untuk instans DB.

#### Penyalinan massal
<a name="ImportData.SQLServer.MgmtStudio.BulkCopy"></a>

Fitur penyalinan massal SQL Server adalah cara efisien menyalin data dari basis data sumber ke instans DB Anda. Penyalinan massal menuliskan data yang Anda tentukan ke file data, seperti file ASCII. Anda kemudian dapat menjalankan penyalinan massal untuk menulis konten file ke instans DB tujuan. 

Bagian ini menggunakan utilitas **bcp**, yang sudah ada dalam semua edisi SQL Server. Untuk informasi terperinci tentang operasi impor dan ekspor massal, lihat [dokumentasi Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms187042%28v=sql.105%29.aspx). 

**catatan**  
Sebelum Anda menggunakan penyalinan massal, Anda harus mengimpor skema basis data Anda terlebih dahulu ke instans DB tujuan. Wizard Membuat dan Menerbitkan Skrip, yang dijelaskan sebelumnya dalam topik ini, adalah alat yang sangat baik untuk tujuan ini. 

Perintah berikut terkoneksi ke instans SQL Server lokal. Perintah tersebut membuat file tab-delimited dari tabel yang ditentukan dalam direktori root C:\$1 dari deployment SQL Server Anda. Tabel ditentukan oleh nama yang sesuai syarat, dan file teks memiliki nama yang sama dengan tabel yang sedang disalin. 

```
bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost -U username -P password -b 10000 
```

Kode sebelumnya mencakup opsi berikut:
+ `-n` menentukan bahwa penyalinan massal menggunakan tipe data native dari data yang akan disalin.
+ `-S` menentukan instans SQL Server yang terkoneksi dengan utilitas *bcp*.
+ `-U` menentukan nama pengguna akun untuk login ke instans SQL Server.
+ `-P` menentukan kata sandi untuk pengguna yang ditentukan oleh `-U`.
+ `-b` menentukan jumlah baris per batch dari data yang diimpor.

**catatan**  
Mungkin ada parameter lain yang penting untuk situasi impor Anda. Misalnya, Anda mungkin memerlukan parameter `-E` yang berkaitan dengan nilai identitas. Untuk informasi lebih lanjut; lihat deskripsi lengkap sintaks baris perintah untuk utilitas **bcp** di [Dokumentasi Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms162802%28v=sql.105%29.aspx). 

Misalnya, anggaplah basis data bernama `store` yang menggunakan skema default, `dbo`, berisi tabel bernama `customers`. Akun pengguna `admin`, dengan kata sandi `insecure`, menyalin 10.000 baris tabel `customers` ke sebuah file bernama `customers.txt`. 

```
bcp store.dbo.customers out C:\customers.txt -n -S localhost -U admin -P insecure -b 10000 
```

Setelah Anda membuat file data, Anda dapat mengunggah data ke instans DB Anda dengan menggunakan perintah serupa. Sebelumnya, buat basis data dan skema pada instans DB target. Lalu gunakan argumen `in` untuk menentukan file input, bukan `out` untuk menentukan file output. Dibanding menggunakan localhost untuk menentukan instans SQL Server lokal, tentukan titik akhir instans DB Anda. Jika Anda menggunakan port selain 1433, sebutkan juga. Nama pengguna dan kata sandi adalah pengguna utama dan kata sandi untuk instans DB Anda. Sintaksnya adalah sebagai berikut. 

```
bcp dbname.schema_name.table_name 
					in C:\table_name.txt -n -S endpoint,port -U master_user_name -P master_user_password -b 10000
```

Untuk melanjutkan contoh sebelumnya, anggaplah bahwa nama pengguna master adalah `admin`, dan kata sandinya adalah `insecure`. Titik akhir untuk instans DB adalah `rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com`, dan Anda menggunakan port 4080. Perintah yang digunakan adalah sebagai berikut. 

```
bcp store.dbo.customers in C:\customers.txt -n -S rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com,4080 -U admin -P insecure -b 10000 
```

**catatan**  
Tentukan kata sandi selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.

## Mengekspor data dari RDS for SQL Server
<a name="SQLServer.Procedural.Exporting"></a>

Anda dapat memilih salah satu opsi berikut untuk mengekspor data dari instans DB RDS untuk SQL Server:
+ **Pencadangan native untuk basis data menggunakan file backup penuh (.bak)** – Menggunakan .bak file untuk melakukan backup basis data sangatlah optimal, dan biasanya merupakan cara tercepat untuk mengekspor data. Untuk informasi selengkapnya, lihat [Mengimpor dan mengekspor basis data SQL Server menggunakan pencadangan dan pemulihan native](SQLServer.Procedural.Importing.md). 
+ **Wizard Impor dan Ekspor pada SQL Server** – Untuk informasi lebih lanjut, lihat [Wizard Impor dan Ekspor pada SQL Server](#SQLServer.Procedural.Exporting.SSIEW). 
+ **Wizard Membuat dan Menerbitkan Skrip dan utilitas bcp SQL Server** – Untuk informasi lebih lanjut, lihat [Wizard Membuat dan Menerbitkan Skrip dan utilitas bcp pada SQL Server](#SQLServer.Procedural.Exporting.SSGPSW). 

### Wizard Impor dan Ekspor pada SQL Server
<a name="SQLServer.Procedural.Exporting.SSIEW"></a>

Anda dapat menggunakan Wizard Impor and Ekspor SQL Server untuk menyalin satu atau lebih tabel, tampilan, atau kueri dari instans DB RDS untuk SQL Server Anda ke penyimpanan data lain. Pilihan ini baik dilakukan jika penyimpanan data target bukan SQL Server. Untuk informasi selengkapnya, lihat [SQL Server Import and Export Wizard](http://msdn.microsoft.com/en-us/library/ms141209%28v=sql.110%29.aspx) di dokumentasi SQL Server. 

Wizard Impor dan Ekspor pada SQL Server tersedia sebagai bagian dari Microsoft SQL Server Management Studio. Klien SQL Server grafis ini tersedia dalam semua edisi Microsoft SQL Server kecuali Edisi Ekspres. SQL Server Management Studio hanya tersedia sebagai aplikasi berbasis Windows. SQL Server Management Studio Express tersedia dari Microsoft sebagai unduhan gratis. Untuk menemukan unduhan ini, lihat [situs web Microsoft](http://www.microsoft.com/en-us/search/Results.aspx?q=sql%20server%20management%20studio). 

**Untuk menggunakan Wizard Impor dan Ekspor pada SQL Server untuk ekspor data**

1. Dalam SQL Server Management Studio, hubungkan ke instans DB RDS untuk SQL Server Anda. Untuk detail tentang cara melakukannya, lihat [Menyambung ke instans Microsoft SQL Server DB](USER_ConnectToMicrosoftSQLServerInstance.md). 

1. Dalam **Penjelajah objek**, perluas **Basis data**, buka menu konteks (klik kanan) untuk basis data sumber, pilih **Tugas**, lalu pilih **Ekspor Data**. Wizard akan muncul. 

1. Di halaman **Pilih Sumber Data**, lakukan hal berikut:

   1. Untuk **Sumber Data**, pilih **SQL Server Native Client 11.0**. 

   1. Verifikasi bahwa kotak **Nama server** menampilkan titik akhir instans DB RDS untuk SQL Server Anda.

   1. Pilih **Gunakan Autentikasi SQL Server**. Untuk **Nama pengguna** dan **Kata sandi**, ketik nama pengguna master dan kata sandi instans DB Anda.

   1. Verifikasi bahwa kotak **Basis data** menampilkan basis data tempat Anda ingin melakukan ekspor data.

   1. Pilih **Berikutnya**.

1. Pada halaman **Pilih tujuan**, lakukan hal berikut ini:

   1. Untuk **Tujuan**, pilih **SQL Server Native Client 11.0**. 
**catatan**  
Sumber data target lainnya tersedia. Ini termasuk penyedia data .NET Framework, penyedia OLE DB, penyedia SQL Server Native Client, penyedia ADO.NET, Microsoft Office Excel, Microsoft Office Access, dan sumber Flat File. Jika Anda memilih untuk menargetkan salah satu sumber data ini, lewati sisa langkah 4. Untuk detail tentang informasi koneksi yang harus diberikan selanjutnya, lihat [Choose a destination](http://msdn.microsoft.com/en-us/library/ms178430%28v=sql.110%29.aspx) dalam dokumentasi SQL Server. 

   1. Untuk **Nama server**, ketik nama server dari instans DB SQL Server target. 

   1. Pilih jenis autentikasi yang sesuai. Ketik nama pengguna dan kata sandi jika perlu. 

   1. Untuk **Basis data**, pilih nama basis data target, atau pilih **Baru** untuk membuat basis data baru untuk diisi data yang di-ekspor. 

      Jika Anda memilih **Baru**, lihat [Create database](http://msdn.microsoft.com/en-us/library/ms183323%28v=sql.110%29.aspx) dalam dokumentasi SQL Server untuk perincian tentang informasi basis data yang akan diberikan.

   1. Pilih **Berikutnya**.

1. Di halaman **Salinan atau Kueri Tabel**, pilih **Salin data dari satu atau lebih tabel atau tampilan** atau **Tulis kueri untuk menentukan data yang akan ditransfer**. Pilih **Berikutnya**. 

1. Jika Anda memilih **Tulis kueri untuk menentukan data yang akan ditransfer**, Anda akan melihat halaman **Berikan Kueri Sumber**. Ketik atau tempel dalam kueri SQL, lalu pilih **Parse** untuk memverifikasinya. Setelah kueri memvalidasi, pilih **Lanjut**. 

1. Di halaman **Pilih Tabel dan Tampilan Sumber**, lakukan hal berikut:

   1. Pilih tabel dan tampilan yang ingin Anda ekspor, atau verifikasi bahwa kueri yang Anda berikan sudah dipilih.

   1. Pilih **Ubah Pemetaan** dan tentukan basis data dan informasi pemetaan kolom. Untuk informasi lebih lanjut, lihat [Column mappings](http://msdn.microsoft.com/en-us/library/ms189660%28v=sql.110%29.aspx) dalam dokumentasi SQL Server. 

   1. (Opsional) Untuk melihat pratinjau data yang akan diekspor, pilih tabel, tampilan, atau kueri, kemudian pilih **Pratinjau**.

   1. Pilih **Berikutnya**.

1. Di halaman **Jalankan Paket**, pastikan bahwa **Jalankan Segera** dipilih. Pilih **Berikutnya**. 

1. Di halaman **Selesaikan Wizard**, pastikan bahwa detail ekspor data sudah seperti yang Anda harapkan. Pilih **Selesai**. 

1. Di halaman **Eksekusi berhasil**, pilih **Tutup**. 

### Wizard Membuat dan Menerbitkan Skrip dan utilitas bcp pada SQL Server
<a name="SQLServer.Procedural.Exporting.SSGPSW"></a>

Anda dapat menggunakan Wizard Membuat dan Menerbitkan Skrip SQL Server untuk membuat skrip untuk seluruh basis data atau hanya objek yang dipilih. Anda dapat menjalankan skrip ini di instans DB SQL Server target untuk membuat ulang objek yang terskrip. Anda kemudian dapat menggunakan utilitas bcp untuk melakukan bulk ekspor data untuk objek yang dipilih ke instans DB target. Pilihan ini baik dilakukan jika Anda ingin memindahkan seluruh basis data (termasuk objek selain tabel) atau data dalam jumlah besar antara dua instans DB SQL Server. Untuk penjelasan lengkap tentang sintaks baris perintah bcp, lihat [utilitas bcp](http://msdn.microsoft.com/en-us/library/ms162802%28v=sql.110%29.aspx) di dokumentasi Microsoft SQL Server. 

Wizard Membuat dan Menerbitkan Skrip pada SQL Server tersedia sebagai bagian dari Microsoft SQL Server Management Studio. Klien SQL Server grafis ini tersedia dalam semua edisi Microsoft SQL Server kecuali Edisi Ekspres. SQL Server Management Studio hanya tersedia sebagai aplikasi berbasis Windows. SQL Server Management Studio Express tersedia dari Microsoft sebagai [unduhan gratis](http://www.microsoft.com/en-us/search/Results.aspx?q=sql%20server%20management%20studio). 

**Untuk menggunakan Wizard Membuat dan Menerbitkan Skrip serta utilitas bcp SQL Server untuk mengekspor data**

1. Dalam SQL Server Management Studio, hubungkan ke instans DB RDS untuk SQL Server Anda. Untuk detail tentang cara melakukannya, lihat [Menyambung ke instans Microsoft SQL Server DB](USER_ConnectToMicrosoftSQLServerInstance.md). 

1. Pada **Penjelajah Objek**, perluas simpul **Basis data** dan pilih basis data yang ingin Anda skripkan. 

1. Ikuti petunjuk di [Generate and publish scripts Wizard](http://msdn.microsoft.com/en-us/library/bb895179%28v=sql.110%29.aspx) dalam dokumentasi SQL Server untuk membuat file skrip.

1. Di SQL Server Management Studio, hubungkan ke instans DB SQL Server Anda.

1. Dengan instans DB SQL Server target yang dipilih di **Penjelajah Objek**, pilih **Buka** pada menu **File**, pilih **File**, lalu buka file skrip. 

1. Jika Anda telah membuat skrip seluruh basis data, tinjau pernyataan CREATE basis data dalam skrip. Pastikan basis data dibuat di lokasi dan dengan parameter yang Anda inginkan. Untuk informasi selengkapnya, lihat [CREATE DATABASE](http://msdn.microsoft.com/en-us/library/ms176061%28v=sql.110%29.aspx) di dokumentasi SQL Server. 

1. Jika Anda membuat pengguna basis data dalam skrip, periksalah untuk melihat apakah login server ada pada instans DB target untuk pengguna tersebut. Jika tidak, buat login untuk pengguna tersebut; jika tidak, perintah terskrip untuk membuat basis data akan gagal. Untuk informasi selengkapnya, lihat [Create a login](http://msdn.microsoft.com/en-us/library/aa337562%28v=sql.110%29.aspx) di dokumentasi SQL Server.

1. Pilih **\$1Execute** pada menu SQL Editor untuk menjalankan file skrip dan membuat objek basis data. Saat skrip selesai, verifikasi bahwa semua objek basis data yang ada sesuai dengan yang diharapkan.

1. Gunakan utilitas bcp untuk mengekspor data dari instans DB RDS untuk SQL Server ke dalam file. Buka prompt perintah dan ketik perintah berikut.

   ```
   bcp database_name.schema_name.table_name out data_file -n -S aws_rds_sql_endpoint -U username -P password
   ```

   Kode sebelumnya mencakup opsi berikut:
   + *table\$1name* adalah nama dari salah satu tabel yang telah Anda buat ulang di basis data target dan sekarang ingin diisi dengan data. 
   + *data\$1file* adalah jalur lengkap dan nama file data yang akan dibuat.
   + `-n` menentukan bahwa penyalinan massal menggunakan tipe data native dari data yang akan disalin.
   + `-S` menentukan instans DB SQL Server untuk ekspor.
   + `-U` menentukan nama pengguna yang digunakan saat terkoneksi ke instans DB SQL Server.
   + `-P` menentukan kata sandi untuk pengguna yang ditentukan oleh `-U`.

   Bagian berikut menunjukkan contoh perintah. 

   ```
   bcp world.dbo.city out C:\Users\JohnDoe\city.dat -n -S sql-jdoe.1234abcd.us-west-2.rds.amazonaws.com,1433 -U JohnDoe -P ClearTextPassword
   ```

   Ulangi langkah ini hingga Anda memiliki file data untuk semua tabel yang ingin Anda ekspor. 

1. Siapkan instans DB target Anda untuk impor data secara massal dengan mengikuti petunjuk di [Basic guidelines for bulk importing data](http://msdn.microsoft.com/en-us/library/ms189989%28v=sql.110%29.aspx) dalam dokumentasi SQL Server. 

1. Tentukan metode impor massal yang akan digunakan setelah mempertimbangkan performa dan kekhawatiran lain yang dibahas dalam [About bulk import and bulk export operations](http://msdn.microsoft.com/en-us/library/ms187042%28v=sql.105%29.aspx) dalam dokumentasi SQL Server. 

1. Impor data secara massal dari file data yang Anda buat dengan menggunakan utilitas bcp. Untuk melakukannya, ikuti petunjuk di [Import and export bulk data by using the bcp utility](http://msdn.microsoft.com/en-us/library/aa337544%28v=sql.110%29.aspx) atau [Import bulk data by using BULK INSERT or OPENROWSET(BULK...)](http://msdn.microsoft.com/en-us/library/ms175915%28v=sql.110%29.aspx) di dokumentasi SQL Server, tergantung pada apa yang Anda putuskan di langkah 11. 

# Menggunakan utilitas BCP dari Linux untuk mengimpor dan mengekspor data
<a name="SQLServer.Procedural.Importing.BCP.Linux"></a>

Utilitas BCP (Bulk Copy Program) menyediakan cara yang efisien untuk mentransfer sejumlah besar data antara RDS Anda untuk instance SQL Server DB dan file data. Anda dapat menggunakan BCP dari lingkungan Linux untuk melakukan operasi data massal, sehingga berguna untuk migrasi data, proses ETL, dan transfer data reguler.

BCP mendukung mengimpor data dari file ke tabel SQL Server dan mengekspor data dari tabel SQL Server ke file. Ini sangat efektif untuk mentransfer data terstruktur dalam berbagai format termasuk file teks yang dibatasi.

## Prasyarat
<a name="SQLServer.Procedural.Importing.BCP.Linux.Prerequisites"></a>

Sebelum menggunakan BCP dengan instans RDS untuk SQL Server DB dari Linux, pastikan Anda memiliki yang berikut:
+ Lingkungan Linux dengan konektivitas jaringan ke RDS Anda untuk instans SQL Server DB
+ Alat baris perintah Microsoft SQL Server yang diinstal pada sistem Linux Anda, termasuk:
  + sqlcmd - Alat kueri baris perintah SQL Server
  + bcp - Utilitas Program Salinan Massal
+ Kredensi yang valid untuk RDS Anda untuk instans SQL Server DB
+ Akses jaringan dikonfigurasi melalui grup keamanan untuk memungkinkan koneksi pada port SQL Server (biasanya 1433)
+ Izin database yang sesuai untuk operasi yang ingin Anda lakukan

## Menginstal alat baris perintah SQL Server di Linux
<a name="SQLServer.Procedural.Importing.BCP.Linux.Installing"></a>

Untuk menggunakan BCP dari Linux, Anda perlu menginstal alat baris perintah Microsoft SQL Server. Untuk petunjuk penginstalan mendetail untuk distribusi Linux spesifik Anda, lihat dokumentasi Microsoft berikut ini:
+ [Instal sqlcmd dan bcp alat baris perintah SQL Server di Linux](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools)
+ [utilitas bcp](https://docs.microsoft.com/en-us/sql/tools/bcp-utility) - Referensi lengkap untuk utilitas BCP

Setelah instalasi, pastikan alat tersedia di PATH Anda dengan menjalankan:

```
bcp -v
sqlcmd -?
```

## Mengekspor data dari RDS for SQL Server
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting"></a>

Anda dapat menggunakan BCP untuk mengekspor data dari RDS Anda untuk SQL Server DB instance ke file pada sistem Linux Anda. Ini berguna untuk membuat cadangan, analisis data, atau menyiapkan data untuk migrasi.

### Sintaks ekspor dasar
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic"></a>

Sintaks dasar untuk mengekspor data menggunakan BCP adalah:

```
bcp database.schema.table out output_file -S server_name -U username -P password [options]
```

Di mana:
+ `database.schema.table`- Nama tabel yang sepenuhnya memenuhi syarat
+ `output_file`- Path dan nama file output
+ `server_name`- RDS Anda untuk titik akhir SQL Server
+ `username`- Nama pengguna database Anda
+ `password`- Kata sandi basis data Anda

### Contoh ekspor
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example"></a>

Contoh berikut mengekspor data dari tabel bernama `customers` dalam `sales` database:

```
bcp sales.dbo.customers out /home/user/customers.txt \
    -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \
    -U admin \
    -P mypassword \
    -c \
    -t "|" \
    -r "\n"
```

Perintah ini:
+ Mengekspor data dari tabel `customers`
+ Menyimpan output ke `/home/user/customers.txt`
+ Menggunakan format karakter (`-c`)
+ Menggunakan pipa (\$1) sebagai pembatas bidang () `-t "|"`
+ Menggunakan baris baru sebagai pembatas baris () `-r "\n"`

## Mengimpor data ke RDS untuk SQL Server
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing"></a>

Anda dapat menggunakan BCP untuk mengimpor data dari file pada sistem Linux Anda ke RDS Anda untuk SQL Server DB instance. Ini berguna untuk migrasi data, memuat data uji, atau pembaruan data reguler.

### Sintaks impor dasar
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic"></a>

Sintaks dasar untuk mengimpor data menggunakan BCP adalah:

```
bcp database.schema.table in input_file -S server_name -U username -P password [options]
```

Di mana:
+ `database.schema.table`- Nama tabel tujuan yang memenuhi syarat
+ `input_file`- Jalur dan nama file input
+ `server_name`- RDS Anda untuk titik akhir SQL Server
+ `username`- Nama pengguna database Anda
+ `password`- Kata sandi basis data Anda

### Contoh impor
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Example"></a>

Contoh berikut mengimpor data dari file ke dalam tabel bernama`customers`:

```
bcp sales.dbo.customers in /home/user/customers.txt \
    -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \
    -U admin \
    -P mypassword \
    -c \
    -t "|" \
    -r "\n" \
    -b 1000
```

Perintah ini:
+ Mengimpor data ke dalam tabel `customers`
+ Membaca data dari `/home/user/customers.txt`
+ Menggunakan format karakter (`-c`)
+ Menggunakan pipa (\$1) sebagai pembatas bidang () `-t "|"`
+ Menggunakan baris baru sebagai pembatas baris () `-r "\n"`
+ Memproses data dalam batch 1000 baris () `-b 1000`

## Opsi BCP umum
<a name="SQLServer.Procedural.Importing.BCP.Linux.Options"></a>

BCP menyediakan banyak opsi untuk mengontrol pemformatan data dan perilaku transfer. Tabel berikut menjelaskan opsi yang umum digunakan:


| Opsi | Deskripsi | 
| --- | --- | 
| -c | Menggunakan tipe data karakter untuk semua kolom | 
| -n | Menggunakan tipe data database asli | 
| -t | Menentukan pembatas bidang (default adalah tab) | 
| -r | Menentukan pembatas baris (default adalah baris baru) | 
| -b | Menentukan ukuran batch untuk operasi massal | 
| -F | Menentukan baris pertama untuk ekspor atau impor | 
| -L | Menentukan baris terakhir untuk ekspor atau impor | 
| -e | Menentukan file kesalahan untuk menangkap baris ditolak | 
| -f | Menentukan file format untuk pemformatan data | 
| -q | Menggunakan pengidentifikasi yang dikutip untuk nama objek | 

## Praktik terbaik dan pertimbangan
<a name="SQLServer.Procedural.Importing.BCP.Linux.BestPractices"></a>

Saat menggunakan BCP dengan RDS untuk SQL Server dari Linux, pertimbangkan praktik terbaik berikut:
+ **Gunakan pemrosesan batch** - Untuk kumpulan data besar, gunakan `-b` opsi untuk memproses data dalam batch. T nya meningkatkan kinerja dan memungkinkan pemulihan kesalahan yang lebih baik.
+ **Tangani kesalahan dengan anggun** — Gunakan `-e` opsi untuk menangkap informasi kesalahan dan baris yang ditolak dalam file terpisah untuk dianalisis.
+ **Pilih format data yang sesuai** — Gunakan format karakter (`-c`) untuk kompatibilitas lintas platform atau format asli (`-n`) untuk kinerja yang lebih baik ketika sumber dan tujuan adalah SQL Server.
+ **Amankan kredensialmu** — Hindari meletakkan kata sandi langsung di baris perintah. Pertimbangkan untuk menggunakan variabel lingkungan atau file konfigurasi dengan izin yang sesuai.
+ **Uji dengan kumpulan data kecil** — Sebelum memproses data dalam jumlah besar, uji perintah BCP Anda dengan kumpulan data yang lebih kecil untuk memverifikasi pemformatan dan konektivitas.
+ **Monitor konektivitas jaringan** — Pastikan koneksi jaringan yang stabil, terutama untuk transfer data yang besar. Pertimbangkan untuk menggunakan alat seperti `screen` atau `tmux` untuk operasi yang berjalan lama.
+ **Validasi integritas data** — Setelah transfer data, verifikasi jumlah baris dan data sampel untuk memastikan operasi selesai dengan sukses.

## Memecahkan masalah umum
<a name="SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting"></a>

Tabel berikut menjelaskan masalah umum yang mungkin Anda temui saat menggunakan BCP dari Linux dan solusinya:


| Isu | Solusi | 
| --- | --- | 
| Batas waktu koneksi atau kesalahan jaringan | Verifikasi titik akhir Amazon RDS, pengaturan grup keamanan, dan konektivitas jaringan Anda. Pastikan port SQL Server (biasanya 1433) dapat diakses dari sistem Linux Anda. | 
| Kegagalan otentikasi | Verifikasi nama pengguna dan kata sandi Anda. Pastikan pengguna database memiliki izin yang sesuai untuk operasi yang Anda lakukan. | 
| Kesalahan format data | Periksa pembatas bidang dan baris Anda. Pastikan format data sesuai dengan apa yang diharapkan BCP. Gunakan file format untuk struktur data yang kompleks. | 
| Kesalahan ditolak izin | Pastikan pengguna database Anda memiliki INSERT izin untuk impor atau SELECT izin untuk ekspor pada tabel target. | 
| Masalah penanganan file besar | Gunakan pemrosesan batch dengan -b opsi. Pertimbangkan untuk membagi file besar menjadi potongan-potongan yang lebih kecil untuk kinerja yang lebih baik dan pemulihan kesalahan. | 
| Masalah pengkodean karakter | Pastikan file data Anda menggunakan pengkodean karakter yang kompatibel. Gunakan -c opsi untuk format karakter atau tentukan halaman kode yang sesuai. | 