SQL Server mencadangkan ke URL untuk praktik terbaik dan pemecahan masalah Microsoft Azure Blob Storage

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Artikel ini mencakup praktik terbaik dan tips pemecahan masalah untuk pencadangan dan pemulihan SQL Server ke Microsoft Azure Blob Storage.

Untuk informasi selengkapnya tentang menggunakan Azure Blob Storage untuk operasi pencadangan atau pemulihan SQL Server, lihat:

Kelola cadangan

Daftar berikut ini mencakup rekomendasi umum untuk mengelola cadangan:

  • Nama file unik untuk setiap cadangan disarankan untuk mencegah penimpaan blob secara tidak sengaja.

  • Saat membuat kontainer, Anda harus mengatur tingkat akses ke privat, sehingga hanya pengguna atau akun yang dapat memberikan informasi autentikasi yang diperlukan yang dapat membaca atau menulis blob dalam kontainer.

  • Untuk database SQL Server pada instans SQL Server yang berjalan di Azure Virtual Machine, gunakan akun penyimpanan di wilayah yang sama dengan komputer virtual untuk menghindari biaya transfer data antar wilayah. Menggunakan wilayah yang sama juga memastikan performa optimal untuk operasi pencadangan dan pemulihan.

  • Aktivitas pencadangan yang gagal dapat mengakibatkan file cadangan yang tidak valid. Kami merekomendasikan identifikasi berkala dari cadangan yang gagal dan menghapus file blob. Untuk informasi selengkapnya, lihat Menghapus File Blob Cadangan dengan Sewa Aktif.

  • WITH COMPRESSION Menggunakan opsi selama pencadangan dapat meminimalkan biaya penyimpanan dan biaya transaksi penyimpanan Anda. Ini juga dapat mengurangi waktu yang diperlukan untuk menyelesaikan proses pencadangan.

  • Atur MAXTRANSFERSIZE argumen dan BLOCKSIZE seperti yang direkomendasikan di SQL Server Backup ke URL.

  • SQL Server agnostik dengan jenis redundansi penyimpanan yang digunakan. Mencadangkan ke blob halaman dan blob blok didukung untuk setiap redundansi penyimpanan (LRS/ZRS/GRS/RA-GRS/RA-GZRS, dll.).

Menangani file besar

Operasi pencadangan SQL Server menggunakan beberapa utas untuk mengoptimalkan transfer data ke Azure Blob Storage. Namun performa tergantung pada berbagai faktor, seperti bandwidth ISV dan ukuran database. Jika Anda berencana untuk mencadangkan database besar atau grup file dari database SQL Server lokal, Anda harus melakukan beberapa pengujian throughput terlebih dahulu. Azure SLA for Storage memiliki waktu pemrosesan maksimum untuk blob yang dapat Anda pertimbangkan.

Menggunakan opsi seperti yang WITH COMPRESSION direkomendasikan di bagian Kelola Cadangan , penting saat mencadangkan file besar.

Memecahkan masalah pencadangan ke atau memulihkan dari URL

Berikut ini adalah beberapa cara cepat untuk memecahkan masalah kesalahan saat mencadangkan atau memulihkan dari Azure Blob Storage.

Untuk menghindari kesalahan karena opsi atau batasan yang tidak didukung, tinjau daftar batasan, dan dukungan untuk BACKUP informasi perintah dan RESTORE , dalam artikel Pencadangan dan Pemulihan SQL Server dengan Microsoft Azure Blob Storage.

Inisialisasi gagal

Pencadangan paralel ke blob yang sama menyebabkan salah satu cadangan gagal dengan kesalahan Inisialisasi gagal .

  • Di SQL Server 2016 (13.x) dan versi yang lebih baru, blob blok lebih disukai untuk Cadangan ke URL.

  • Jika Anda menggunakan blob halaman dengan BACKUP TO URL, Anda dapat menggunakan Lacak Bendera 3051 untuk mengaktifkan pengelogan ke log kesalahan tertentu dengan format berikut di: BackupToUrl-\<instname>-\<dbname>-action-\<PID>.log, di mana \<action> adalah salah satu opsi berikut:

    • DB
    • FILELISTONLY
    • LABELONLY
    • HEADERONLY
    • VERIFYONLY

Anda juga dapat menemukan informasi dengan meninjau windows Pemantau Peristiwa, di bawah Log aplikasi dengan nama SQLBackupToUrl.

Permintaan tidak dapat dilakukan karena kesalahan perangkat I/O.

Pertimbangkan COMPRESSIONargumen , MAXTRANSFERSIZE, BLOCKSIZE, dan beberapa URL saat mencadangkan database besar. Lihat Mencadangkan VLDB ke Azure Blob Storage.

Kesalahan:

Msg 3202, Level 16, State 1, Line 1
Write on "https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak" failed:
1117(The request could not be performed because of an I/O device error.)
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.

Contoh resolusi:

BACKUP DATABASE TestDb
TO URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak',
URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_1.bak',
URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_2.bak'
WITH COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536;

Marka File Pesan pada perangkat tidak diratakan

Saat memulihkan dari cadangan terkompresi, Anda mungkin melihat kesalahan berikut:

SqlException 3284 occurred. Severity: 16 State: 5
Message Filemark on device 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak' is not aligned.
Reissue the Restore statement with the same block size used to create the backupset: '65536' looks like a possible value.

Untuk mengatasi kesalahan ini, keluarkan kembali pernyataan RESTORE dengan BLOCKSIZE = 65536 yang ditentukan.

Aktivitas pencadangan yang gagal dapat mengakibatkan blob dengan sewa aktif

Kesalahan selama pencadangan karena blob yang memiliki sewa aktif pada mereka: Failed backup activity can result in blobs with active leases.

Jika pernyataan cadangan ditempat ulang, operasi pencadangan mungkin gagal dengan kesalahan yang mirip dengan output berikut:

Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request.

Jika pernyataan pemulihan dicoba pada file blob cadangan yang memiliki sewa aktif, operasi pemulihan gagal dengan kesalahan yang mirip dengan yang berikut ini:

Exception Message: The remote server returned an error: (409) Conflict..

Ketika kesalahan tersebut terjadi, file blob perlu dihapus. Untuk informasi selengkapnya mengenai skenario ini dan cara memperbaiki masalah ini, harap lihat Menghapus File Blob Cadangan dengan Sewa Aktif.

Kesalahan OS 50: Permintaan tidak didukung

Saat mencadangkan database, Anda mungkin melihat kesalahan Operating system error 50(The request is not supported) karena alasan berikut:

  • Akun penyimpanan yang ditentukan bukan Tujuan Umum V1/V2.
  • Token SAS memiliki ? simbol di awal token ketika kredensial dibuat. Jika ya, maka hapus.
  • Koneksi saat ini tidak dapat tersambung ke akun penyimpanan dari komputer saat ini menggunakan Storage Explorer atau SQL Server Management Studio (SSMS).
  • Kebijakan yang ditetapkan ke token SAS kedaluwarsa. Buat kebijakan baru menggunakan Azure Storage Explorer dan buat token SAS baru menggunakan kebijakan atau ubah kredensial dan coba cadangkan lagi.
  • Sertifikat akar hilang di penyimpanan Sertifikasi Akar Tepercaya. Untuk informasi selengkapnya, lihat Otoritas Sertifikat Akar Azure.

Kesalahan autentikasi

WITH CREDENTIAL adalah opsi baru dan diperlukan untuk mencadangkan atau memulihkan dari Azure Blob Storage.

Kegagalan yang terkait dengan kredensial bisa menjadi berikut: The credential specified in the **BACKUP** or **RESTORE** command does not exist.

Untuk menghindari masalah ini, Anda dapat menyertakan pernyataan T-SQL untuk membuat kredensial jika tidak ada dalam pernyataan cadangan. Berikut ini adalah contoh yang dapat Anda gunakan:

IF NOT EXISTS (
   SELECT *
   FROM sys.credentials
   WHERE credential_identity = 'mycredential'
)
CREATE CREDENTIAL [<credential name>]
   WITH IDENTITY = 'mystorageaccount',
      SECRET = '<storage access key>';

Kredensial ada tetapi login yang digunakan untuk menjalankan perintah cadangan tidak memiliki izin untuk mengakses kredensial. Gunakan akun dalam peran db_backupoperator dengan Mengubah izin kredensial apa pun.

Verifikasi nama akun penyimpanan dan nilai kunci. Informasi yang disimpan dalam kredensial harus cocok dengan nilai properti akun penyimpanan Azure yang Anda gunakan dalam operasi pencadangan dan pemulihan.

Kesalahan 400 (Permintaan Buruk)

Menggunakan SQL Server 2012 (11.x) Anda mungkin mengalami kesalahan saat melakukan pencadangan yang mirip dengan output berikut:

Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (400) Bad Request.

Ini disebabkan oleh versi TLS yang didukung oleh Akun Azure Storage. Mengubah versi TLS yang didukung atau menggunakan solusi yang tercantum dalam KB4017023.

Kesalahan proksi

Jika Anda menggunakan Server Proksi untuk mengakses internet, Anda mungkin melihat masalah berikut:

Koneksi pembatasan oleh server proksi

Server proksi dapat memiliki pengaturan yang membatasi jumlah koneksi per menit. Proses Pencadangan ke URL adalah proses multi-utas dan karenanya dapat melampaui batas ini. Jika ini terjadi, server proksi akan mematikan koneksi. Untuk mengatasi masalah ini, ubah pengaturan proksi sehingga SQL Server tidak menggunakan proksi. Berikut ini adalah beberapa contoh jenis atau pesan kesalahan yang mungkin Anda lihat di log kesalahan:

Write on "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak" failed: Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.
A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Error could not be gathered from Remote Endpoint.

Msg 3013, Level 16, State 1, Line 2

BACKUP DATABASE is terminating abnormally.
BackupIoRequest::ReportIoError: write failure on backup device https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak'. Operating system error Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.

Jika menggunakan blob halaman, Anda mengaktifkan pengelogan verbose menggunakan Bendera Pelacakan 3051, Anda mungkin juga melihat pesan berikut di log: HTTP status code 502, HTTP Status Message Proxy Error (The number of HTTP requests per minute exceeded the configured limit. Contact your ISA Server administrator.)

Pengaturan proksi default tidak diambil

Terkadang pengaturan default tidak diambil menyebabkan kesalahan autentikasi proksi seperti:

A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (407)* **Proxy Authentication Required.

Untuk mengatasi masalah ini, buat file konfigurasi yang memungkinkan proses Pencadangan ke URL menggunakan pengaturan proksi default menggunakan langkah-langkah berikut:

  1. Buat file konfigurasi bernama BackuptoURL.exe.config dengan konten xml berikut:

    <?xml version ="1.0"?>
    <configuration>
        <system.net>
            <defaultProxy enabled="true" useDefaultCredentials="true">
                <proxy usesystemdefault="true" />
            </defaultProxy>
        </system.net>
    </configuration>
    
  2. Tempatkan file konfigurasi di folder Binn Instans SQL Server. Misalnya, jika SQL Server saya diinstal pada C drive komputer, tempatkan file konfigurasi di C:\Program Files\Microsoft SQL Server\MSSQL13.\<InstanceName>\MSSQL\Binn.

  3. BackuptoURL.exe tidak dipanggil saat menggunakan kunci SAS, tetapi dipicu saat menggunakan kunci akses. Pastikan Anda menggunakan kunci akses, atau Anda bisa menerima kesalahan berikut:

    Kesalahan sistem operasi 50(Permintaan tidak didukung.)

Kesalahan dan solusi umum

Masalah Solusi
Kesalahan 3063: Gagal menulis ke perangkat blob blok cadangan https://storageaccount/container/name.bak. Perangkat telah mencapai batas blok yang diizinkan. Untuk memperbaiki masalah ini, stripe target cadangan Anda dengan beberapa file dan pastikan untuk menggunakan parameter berikut dalam perintah cadangan: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536.
Kesalahan 3035: Pencadangan diferensial gagal untuk satu atau banyak basis data. Ini terjadi jika Anda mengonfigurasi layanan Azure Backup untuk mencadangkan database SQL atau rekam jepret komputer virtual (VM), yang tidak membuat cadangan khusus salinan, menyebabkan rencana pemeliharaan atau pencadangan sesuai permintaan pekerjaan agen SQL Gagal. Untuk memperbaikinya, tambahkan kunci registri ini ke VM yang menghosting instans SQL Server di kunci [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] registri dan tambahkan "USEVSSCOPYBACKUP"="TRUE".
Kesalahan 3201: Pencadangan gagal dengan - Kesalahan sistem operasi 50 (Permintaan tidak didukung). Meregenerasi token tanda tangan akses bersama (SAS) menggunakan Storage Explorer: Anda dapat membuat kebijakan baru menggunakan Azure Storage Explorer dan membuat token SAS baru dengan kebijakan tersebut dari Azure Storage Explorer. Buat kembali info masuk menggunakan token SAS baru ini yang dihasilkan dari Azure Storage dan coba lakukan pencadangan lagi. Untuk informasi selengkapnya, lihat masalah yang diketahui dengan URL BACKUP TO. Pastikan kelompok keamanan jaringan (NSG) dan/atau firewall Anda mengizinkan koneksi masuk dan keluar pada port 1433 dan 443.
Kesalahan 3271: Pencadangan gagal karena kesalahan TLS - Pencadangan ke URL menerima pengecualian dari titik akhir jarak jauh. Ini dapat terjadi pada SQL Server versi 2012, 2014, dan 2016. Mencadangkan ke URL layanan Microsoft Azure Blob Storage tidak kompatibel dengan TLS 1.2 dan dapat diperbaiki dengan mengikuti instruksi di KB4017023.
Kesalahan 3271: Microsoft Azure Backup ke URL menerima pengecualian dari titik akhir jarak jauh. Pesan Pengecualian: Nama jarak jauh tidak dapat diselesaikan. Anda melihat pesan ini jika kredensial, rahasia, atau kunci SAS yang salah digunakan untuk mengonfigurasi cadangan. Hilangkan info masuk dan buat ulang. Untuk SQL Server 2012/2014, gunakan identitas akun penyimpanan dan kunci akses dan untuk SQL Server 2016 dan versi yang lebih baru, gunakan SAS.
Kesalahan 18210: Pengecualian: Server jarak jauh menampilkan kesalahan: (400) Permintaan Buruk. Untuk mengatasinya, ubah versi TLS minimum untuk akun penyimpanan menjadi 1.0 (Versi TLS Minimum Konfigurasi>Akun>Penyimpanan), atau aktifkan kriptografi yang kuat seperti yang didokumenkan dalam KB4017023.
Pesan Pengecualian: Server jarak jauh mengembalikan kesalahan: (412) Saat ini ada sewa pada blob dan tidak ada ID sewa yang ditentukan dalam permintaan. Identifikasi blob di Azure Storage Explorer dengan ukuran 1 TB, putuskan sewa, hapus blob, dan coba lagi operasi pencadangan.
Kesalahan: Server jauh menampilkan kesalahan: (403) Dilarang. Buat ulang akun penyimpanan, kredensial, dan token SAS untuk menyelesaikan masalah.
Pencadangan untuk database 1-TB gagal pada SQL Server 2012/2014. Cadangan 1 TB adalah batasan yang diketahui pada blob halaman sebelum SQL Server 2016 (13.x). Gunakan kompresi cadangan dengan menambahkan klausul 'WITH COMPRESSION' ke pernyataan cadangan T-SQL Anda atau tingkatkan instans SQL Server Anda ke SQL Server 2016 (13.x) dan versi yang lebih baru.
Kesalahan: Microsoft Azure Backup ke URL menerima pengecualian dari titik akhir jarak jauh. Pesan Pengecualian: Server jarak jauh mengembalikan kesalahan: (416) Rentang halaman yang ditentukan tidak valid. Anda mungkin melihat ini jika Anda menggunakan SQL Server 2012 (11.x) dan SQL Server 2014 (12.x), dan ukuran cadangan Anda meningkat menjadi 1 TB. Hapus file cadangan Anda dan/atau gunakan kompresi cadangan untuk mengatasinya.
Pencadangan gagal saat menggunakan rencana pemeliharaan. Ada beberapa bug dengan rencana pemeliharaan. Coba gunakan T-SQL untuk menjalankan pencadangan Anda. Jika T-SQL berfungsi, maka Anda dapat membuat pekerjaan SQL Agent untuk dijalankan untuk mencadangkan database Anda.
Pencadangan gagal karena batas mesin virtual tercapai. Jika Anda mendapatkan kesalahan bahwa batas IOPS/VM disk tercapai, pencadangan mungkin melambat atau gagal. Untuk memantau batas IOPS/VM, gunakan Metrik Azure Monitor dan mengubah ukuran VM/disk, jika perlu, untuk memperbaiki masalah.
Server jarak jauh mengembalikan kesalahan: (409) Konflik untuk SQL Server 2012/2014" Akun penyimpanan dengan namespace hierarkis dilengkapi untuk blob blok, bukan blob halaman. Akun penyimpanan tanpa fitur ini tidak boleh digunakan untuk URL BACKUP TO di SQL Server 2014 (12.x).