Pemecahan Masalah Pemeliharaan & Konektor SQL Server

Berlaku untuk:yes SQL Server (semua versi yang didukung)

Informasi tambahan tentang Konektor SQL Server disediakan dalam topik ini. Untuk informasi selengkapnya tentang konektor SQL Server, lihat Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault (SQL Server), Langkah-langkah Penyiapan untuk Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault, dan Menggunakan Konektor SQL Server dengan Fitur Enkripsi SQL.

J. Petunjuk Pemeliharaan untuk Konektor SQL Server

Rollover Kunci

Penting

Konektor SQL Server memerlukan nama kunci untuk hanya menggunakan karakter "a-z", "A-Z", "0-9", dan "-", dengan batas 26 karakter. Versi kunci yang berbeda dengan nama kunci yang sama di Azure Key Vault tidak akan berfungsi dengan Konektor SQL Server. Untuk memutar kunci Azure Key Vault yang sedang digunakan oleh SQL Server, kunci baru dengan nama kunci baru harus dibuat.

Biasanya, kunci asimetris server untuk enkripsi SQL Server perlu diberi versi setiap 1-2 tahun. Penting untuk dicatat bahwa meskipun Key Vault memungkinkan kunci untuk diberi versi, pelanggan tidak boleh menggunakan fitur tersebut untuk menerapkan penerapan versi. Konektor SQL Server tidak dapat menangani perubahan dalam versi kunci Key Vault. Untuk menerapkan penerapan versi kunci, buat kunci baru di Key Vault lalu enkripsi ulang kunci enkripsi data di Management Studio.

Untuk TDE, ini adalah bagaimana hal ini akan dicapai:

  • Di PowerShell: Buat kunci asimetris baru (dengan nama yang berbeda dari kunci asimetris TDE Anda saat ini) di Key Vault.

    Add-AzKeyVaultKey -VaultName 'ContosoDevKeyVault' `  
      -Name 'Key2' -Destination 'Software'  
    
  • Menggunakan Management Studio atau sqlcmd.exe: Gunakan pernyataan berikut seperti yang ditunjukkan pada Langkah 3, bagian 3.

    Impor kunci asimetris baru.

    USE master  
    CREATE ASYMMETRIC KEY [MASTER_KEY2]
    FROM PROVIDER [EKM]
    WITH PROVIDER_KEY_NAME = 'Key2',
    CREATION_DISPOSITION = OPEN_EXISTING
    GO  
    

    Buat login baru untuk dikaitkan dengan kunci asimetris baru (seperti yang ditunjukkan di bawah instruksi TDE).

    USE master  
    CREATE LOGIN TDE_Login2
    FROM ASYMMETRIC KEY [MASTER_KEY2]  
    GO  
    

    Buat kredensial baru untuk dipetakan ke login.

    CREATE CREDENTIAL Azure_EKM_TDE_cred2  
        WITH IDENTITY = 'ContosoDevKeyVault',
       SECRET = 'EF5C8E094D2A4A769998D93440D8115DAADsecret123456789='
    FOR CRYPTOGRAPHIC PROVIDER EKM;  
    
    ALTER LOGIN TDE_Login2  
    ADD CREDENTIAL Azure_EKM_TDE_cred2;  
    GO  
    

    Pilih database yang kunci enkripsi databasenya ingin Anda enkripsi ulang.

    USE [database]  
    GO  
    

    Mengenkripsi ulang kunci enkripsi database.

    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER ASYMMETRIC KEY [MASTER_KEY2];  
    GO  
    

Peningkatan Konektor SQL Server

Versi 1.0.0.440 dan yang lebih lama telah diganti dan tidak lagi didukung di lingkungan produksi. Versi 1.0.1.0 dan yang lebih baru didukung di lingkungan produksi. Gunakan instruksi berikut untuk meningkatkan ke versi terbaru yang tersedia di Pusat Unduhan Microsoft.

Mutakhirkan

  1. Menghentikan layanan SQL Server menggunakan SQL Server Configuration Manager
  2. Hapus instalan versi lama menggunakan Control Panel\Programs\Programs and Features
    1. Nama aplikasi: Konektor SQL Server untuk Microsoft Azure Key Vault
    2. Versi: 15.0.300.96 (atau lebih lama)
    3. Tanggal file DLL: 30/01/2018 15:00 (atau lebih lama)
  3. Menginstal (meningkatkan) Konektor SQL Server baru untuk Microsoft Azure Key Vault
    1. Versi: 15.0.2000.440
    2. Tanggal file DLL: 09/11/2020 05:17
  4. Memulai layanan SQL Server
  5. Uji DB terenkripsi dapat diakses

Putar kembali

  1. Menghentikan layanan SQL Server menggunakan SQL Server Configuration Manager

  2. Hapus instalan versi baru menggunakan Control Panel\Programs\Programs and Features

    1. Nama aplikasi: Konektor SQL Server untuk Microsoft Azure Key Vault
    2. Versi: 15.0.2000.440
    3. Tanggal file DLL: 09/11/2020 05:17
  3. Menginstal versi lama Konektor SQL Server untuk Microsoft Azure Key Vault

    1. Versi: 15.0.300.96
    2. Tanggal file DLL: 30/01/2018 15:00
  4. Memulai layanan SQL Server

  5. Periksa apakah database yang menggunakan TDE dapat diakses.

  6. Setelah memvalidasi bahwa pembaruan berfungsi, Anda dapat menghapus folder Konektor SQL Server lama (jika Anda memilih untuk mengganti namanya alih-alih menghapus instalasi di Langkah 3.)

Versi konektor SQL Server yang lebih lama

Tautan mendalam ke versi konektor SQL Server yang lebih lama

Menggulung Perwakilan Layanan SQL Server

SQL Server menggunakan Perwakilan Layanan yang dibuat di Azure Active Directory sebagai kredensial untuk mengakses Key Vault. Perwakilan Layanan memiliki ID Klien dan Kunci Autentikasi. Kredensial SQL Server disiapkan dengan VaultName, ID Klien, dan Kunci Autentikasi. Kunci Autentikasi berlaku untuk jangka waktu tertentu (satu atau dua tahun). Sebelum periode waktu berakhir, kunci baru harus dibuat di Azure ACTIVE Directory untuk Perwakilan Layanan. Kemudian kredensial harus diubah di SQL Server. Management Studio mempertahankan cache untuk kredensial dalam sesi saat ini, jadi ketika kredensial diubah, Management Studio harus dimulai ulang.

Pencadangan dan Pemulihan Kunci

Brankas kunci harus dicadangkan secara teratur. Jika kunci asimetris di vault hilang, kunci tersebut dapat dipulihkan dari cadangan. Kunci harus dipulihkan menggunakan nama yang sama seperti sebelumnya, yang akan dilakukan perintah Pulihkan PowerShell (lihat langkah-langkah di bawah).
Jika vault hilang, Anda harus membuat ulang vault dan memulihkan kunci asimetris ke vault menggunakan nama yang sama seperti sebelumnya. Nama vault dapat berbeda (atau sama seperti sebelumnya). Atur izin akses pada vault baru untuk diberikan kepada perwakilan layanan SQL Server akses yang diperlukan untuk skenario enkripsi SQL Server, lalu sesuaikan kredensial SQL Server sehingga nama vault baru tercermin.

Singkatnya, berikut adalah langkah-langkahnya:

  • Cadangkan kunci vault (menggunakan cmdlet PowerShell Backup-AzureKeyVaultKey).
  • Dalam kasus kegagalan vault, buat vault baru di wilayah geografis yang sama. Pengguna yang membuat vault harus berada di direktori default yang sama dengan penyiapan perwakilan layanan untuk SQL Server.
  • Pulihkan kunci ke vault baru menggunakan cmdlet PowerShell Restore-AzureKeyVaultKey, yang memulihkan kunci menggunakan nama yang sama seperti sebelumnya. Jika sudah ada kunci dengan nama yang sama, pemulihan akan gagal.
  • Berikan izin kepada perwakilan layanan SQL Server untuk menggunakan vault baru ini.
  • Ubah kredensial SQL Server yang digunakan oleh Mesin Database untuk mencerminkan nama vault baru (jika diperlukan).

Cadangan kunci dapat dipulihkan di seluruh wilayah Azure, selama tetap berada di wilayah geografis atau cloud nasional yang sama: AS, Kanada, Jepang, Australia, India, APAC, Eropa Brasil, Tiongkok, Pemerintah AS, atau Jerman.

B. Pertanyaan Umum

Di Azure Key Vault

Bagaimana cara kerja operasi utama dengan Azure Key Vault?
Kunci asimetris di brankas kunci digunakan untuk melindungi kunci enkripsi SQL Server. Hanya bagian publik dari kunci asimetris yang pernah meninggalkan brankas; bagian privat tidak pernah diekspor oleh vault. Semua operasi kriptografi yang menggunakan kunci asimetris dilakukan dalam layanan Azure Key Vault, dan dilindungi oleh keamanan layanan.

Apa itu URI Kunci?
Setiap kunci di Azure Key Vault memiliki Pengidentifikasi Sumber Daya Seragam (URI), yang dapat Anda gunakan untuk mereferensikan kunci dalam aplikasi Anda. Gunakan format https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey untuk mendapatkan versi saat ini, dan gunakan format https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87 untuk mendapatkan versi tertentu.

Saat Mengonfigurasi SQL Server

Titik akhir apa yang perlu diakses oleh Konektor SQL Server? Konektor berbicara dengan dua titik akhir, yang perlu diizinkan. Satu-satunya port yang diperlukan untuk komunikasi keluar ke layanan lain ini adalah 443 untuk Https:

  • login.microsoftonline.com/*:443
  • .vault.azure.net/:443

Selain itu, memeriksa daftar pencabutan sertifikat dapat membuat lalu lintas HTTP pada port 80.

Catatan

Menggunakan Konektor SQL Server untuk Azure Key Vault di belakang firewall atau server proksi dapat memengaruhi performa jika lalu lintas tertunda atau diblokir. Biasakan diri Anda dengan Akses Azure Key Vault di belakang firewall untuk memastikan aturan yang benar sudah ada.

Bagaimana cara menyambungkan ke Azure Key Vault melalui Server Proksi HTTP? Konektor menggunakan pengaturan konfigurasi Proksi Internet Explorer. Pengaturan ini dapat dikontrol melalui Kebijakan Grup atau melalui Registri, tetapi penting untuk dicatat bahwa pengaturan tersebut tidak di seluruh sistem dan perlu ditargetkan ke akun layanan yang menjalankan instans SQL Server. Jika Administrator Database melihat atau mengedit pengaturan di Internet Explorer, mereka hanya akan memengaruhi akun Administrator Database daripada mesin SQL Server. Masuk ke server secara interaktif menggunakan akun layanan tidak disarankan dan diblokir di banyak lingkungan yang aman. Perubahan pada pengaturan proksi yang dikonfigurasi mungkin mengharuskan memulai ulang instans SQL Server agar berlaku saat di-cache saat Konektor pertama kali mencoba menyambungkan ke brankas kunci.

Ukuran kunci mana di Azure Key Vault yang didukung oleh Konektor SQL Server? Build terbaru SQL Server Connector mendukung kunci Azure Key Vault ukuran 2048 dan 3072.

Catatan

Tampilan "sys.asymmetric_keys" melaporkan ukuran kunci sebagai 2048 bahkan jika ukuran kunci 3072 digunakan. Ini adalah celah yang diketahui dalam tampilan ini dan tim produk SQL Server akan mengatasinya dalam rilis mendatang.

Apa tingkat izin minimum yang diperlukan untuk setiap langkah konfigurasi di SQL Server?
Meskipun Anda dapat melakukan semua langkah konfigurasi sebagai anggota peran server tetap sysadmin, Microsoft mendorong Anda untuk meminimalkan izin yang Anda gunakan. Daftar berikut menentukan tingkat izin minimum untuk setiap tindakan.

  • Untuk membuat penyedia kriptografi, memerlukan CONTROL SERVER izin atau keanggotaan dalam peran server tetap sysadmin .

  • Untuk mengubah opsi konfigurasi dan menjalankan RECONFIGURE pernyataan, Anda harus diberikan ALTER SETTINGS izin tingkat server. Izin ALTER SETTINGS secara implisit dipegang oleh peran server tetap sysadmin dan serveradmin .

  • Untuk membuat kredensial, memerlukan ALTER ANY CREDENTIAL izin.

  • Untuk menambahkan kredensial ke login, memerlukan ALTER ANY LOGIN izin.

  • Untuk membuat kunci asimetris CREATE ASYMMETRIC KEY , memerlukan izin.

Bagaimana cara mengubah Direktori Aktif default saya sehingga brankas kunci saya dibuat dalam langganan dan Direktori Aktif yang sama dengan perwakilan layanan yang saya buat untuk Konektor SQL Server?

Azure AD change default directory helpsteps

  1. Masuk ke Portal Azure.

  2. Di sudut kanan atas halaman, pilih ikon pengaturan, atau profil pengguna Anda.

  3. Pada halaman Direktori + langganan , pilih Semua Direktori untuk melihat semua Azure Active Directory tempat Anda berada.

  4. Anda dapat mengubah direktori Startup, atau beralih ke direktori lain jika Anda memiliki beberapa direktori.

    Catatan

    Anda mungkin tidak memiliki izin untuk benar-benar mengubah direktori default pada langganan Azure Anda. Dalam hal ini, buat perwakilan layanan Azure AD dalam direktori default Anda sehingga berada dalam direktori yang sama dengan Azure Key Vault yang digunakan nanti.

Untuk mempelajari selengkapnya tentang Direktori Aktif, baca Bagaimana langganan Azure terkait dengan Azure Active Directory

C. Penjelasan Kode Kesalahan untuk Konektor SQL Server

Kode Kesalahan Penyedia:

Kode kesalahan Simbol Deskripsi
0 scp_err_Success Operasi berhasil.
1 scp_err_Failure Operasi gagal.
2 scp_err_InsufficientBuffer Kesalahan ini memberi tahu mesin untuk mengalokasikan lebih banyak memori untuk buffer.
3 scp_err_NotSupported Operasi tidak didukung. Misalnya, jenis kunci atau algoritma yang ditentukan tidak didukung oleh penyedia EKM.
4 scp_err_NotFound Kunci atau algoritma yang ditentukan tidak dapat ditemukan oleh penyedia EKM.
5 scp_err_AuthFailure Autentikasi gagal dengan penyedia EKM.
6 scp_err_InvalidArgument Argumen yang disediakan tidak valid.
7 scp_err_ProviderError Ada kesalahan yang tidak ditentukan terjadi di penyedia EKM yang tertangkap oleh mesin SQL.
401 acquireToken Server merespons 401 untuk permintaan tersebut. Pastikan ID dan rahasia klien sudah benar, dan string kredensial adalah perangkaian ID klien AAD dan rahasia tanpa tanda hubung.
404 getKeyByName Server merespons 404, karena nama kunci tidak ditemukan. Pastikan nama kunci ada di vault Anda.
2049 scp_err_KeyNameDoesNotFitThumbprint Nama kunci terlalu panjang untuk dimasukkan ke dalam thumbprint mesin SQL. Nama kunci tidak boleh melebihi 26 karakter.
2050 scp_err_PasswordTooShort String rahasia yang merupakan perangkaian ID klien AAD dan rahasia lebih pendek dari 32 karakter.
2051 scp_err_OutOfMemory Mesin SQL kehabisan memori dan gagal mengalokasikan memori untuk penyedia EKM.
2052 scp_err_ConvertKeyNameToThumbprint Gagal mengonversi nama kunci menjadi thumbprint.
2053 scp_err_ConvertThumbprintToKeyName Gagal mengonversi thumbprint menjadi nama kunci.
2058 scp_err_FailureInRegistry Gagal melakukan operasi dalam registri. Akun layanan SQL Server tidak memiliki izin untuk membuat kunci registri.
3000 ErrorSuccess Operasi AKV telah berhasil.
3001 ErrorUnknown Operasi AKV gagal dengan kesalahan yang tidak ditentukan.
3002 ErrorHttpCreateHttpClientOutOfMemory Tidak dapat membuat HttpClient untuk operasi AKV karena kehabisan memori.
3003 ErrorHttpOpenSession Tidak dapat membuka sesi Http karena kesalahan jaringan.
3004 ErrorHttpConnectSession Tidak dapat menyambungkan sesi Http karena kesalahan jaringan.
3005 ErrorHttpAttemptConnect Tidak dapat mencoba sambungan karena kesalahan jaringan.
3006 ErrorHttpOpenRequest Tidak dapat membuka permintaan karena kesalahan jaringan.
3007 ErrorHttpAddRequestHeader Tidak dapat menambahkan header permintaan.
3008 ErrorHttpSendRequest Tidak dapat mengirim permintaan karena kesalahan jaringan.
3009 ErrorHttpGetResponseCode Tidak bisa mendapatkan kode respons karena kesalahan jaringan.
3010 ErrorHttpResponseCodeUnauthorized Server merespons 401 untuk permintaan tersebut.
3011 ErrorHttpResponseCodeThrottled Server telah membatasi permintaan.
3012 ErrorHttpResponseCodeClientError Permintaan yang dikirim dari konektor tidak valid. Ini biasanya berarti nama kunci tidak valid atau berisi karakter yang tidak valid.
3013 ErrorHttpResponseCodeServerError Server merespons kode respons antara 500 dan 600.
3014 ErrorHttpQueryHeader Tidak dapat meminta header respons.
3015 ErrorHttpQueryHeaderOutOfMemoryCopyHeader Tidak dapat menyalin header respons karena kehabisan memori.
3016 ErrorHttpQueryHeaderOutOfMemoryReallocBuffer Tidak dapat mengkueri header respons karena kehabisan memori saat merealokasi buffer.
3017 ErrorHttpQueryHeaderNotFound Tidak dapat menemukan header kueri dalam respons.
3018 ErrorHttpQueryHeaderUpdateBufferLength Tidak dapat memperbarui panjang buffer saat mengkueri header respons.
3019 ErrorHttpReadData Tidak dapat membaca data respons karena kesalahan jaringan.
3076 ErrorHttpResourceNotFound Server merespons 404, karena nama kunci tidak ditemukan. Pastikan nama kunci ada di vault Anda.
3077 ErrorHttpOperationForbidden Server merespons 403, karena pengguna tidak memiliki izin yang tepat untuk melakukan tindakan. Pastikan Anda memiliki izin untuk operasi yang ditentukan. Minimal, konektor memerlukan izin 'get, list, wrapKey, unwrapKey' agar berfungsi dengan baik.
3100 ErrorHttpCreateHttpClientOutOfMemory Tidak dapat membuat HttpClient untuk operasi AKV karena kehabisan memori.
3101 ErrorHttpOpenSession Tidak dapat membuka sesi Http karena kesalahan jaringan.
3102 ErrorHttpConnectSession Tidak dapat menyambungkan sesi Http karena kesalahan jaringan.
3103 ErrorHttpAttemptConnect Tidak dapat mencoba sambungan karena kesalahan jaringan.
3104 ErrorHttpOpenRequest Tidak dapat membuka permintaan karena kesalahan jaringan.
3105 ErrorHttpAddRequestHeader Tidak dapat menambahkan header permintaan.
3106 ErrorHttpSendRequest Tidak dapat mengirim permintaan karena kesalahan jaringan.
3107 ErrorHttpGetResponseCode Tidak bisa mendapatkan kode respons karena kesalahan jaringan.
3108 ErrorHttpResponseCodeUnauthorized Server merespons 401 untuk permintaan tersebut. Pastikan Id klien dan rahasia sudah benar, dan string kredensial adalah perangkaian Id klien AAD dan rahasia tanpa tanda hubung.
3109 ErrorHttpResponseCodeThrottled Server telah membatasi permintaan.
3110 ErrorHttpResponseCodeClientError Permintaan tidak valid. Ini biasanya berarti nama kunci tidak valid atau berisi karakter yang tidak valid.
3111 ErrorHttpResponseCodeServerError Server merespons kode respons antara 500 dan 600.
3112 ErrorHttpResourceNotFound Server merespons 404, karena nama kunci tidak ditemukan. Pastikan nama kunci ada di vault Anda.
3113 ErrorHttpOperationForbidden Server merespons 403, karena pengguna tidak memiliki izin yang tepat untuk melakukan tindakan. Pastikan Anda memiliki izin untuk operasi yang ditentukan. Minimal,'get, wrapKey, unwrapKey' izin diperlukan.
3114 ErrorHttpQueryHeader Tidak dapat meminta header respons.
3115 ErrorHttpQueryHeaderOutOfMemoryCopyHeader Tidak dapat menyalin header respons karena kehabisan memori.
3116 ErrorHttpQueryHeaderOutOfMemoryReallocBuffer Tidak dapat mengkueri header respons karena kehabisan memori saat merealokasi buffer.
3117 ErrorHttpQueryHeaderNotFound Tidak dapat menemukan header kueri dalam respons.
3118 ErrorHttpQueryHeaderUpdateBufferLength Tidak dapat memperbarui panjang buffer saat mengkueri header respons.
3119 ErrorHttpReadData Tidak dapat membaca data respons karena kesalahan jaringan.
3120 ErrorHttpGetResponseOutOfMemoryCreateTempBuffer Tidak dapat memperoleh isi respons karena kehabisan memori saat membuat buffer sementara.
3121 ErrorHttpGetResponseOutOfMemoryGetResultString Tidak dapat memperoleh isi respons karena kehabisan memori saat mendapatkan string hasil.
3122 ErrorHttpGetResponseOutOfMemoryAppendResponse Tidak dapat memperoleh isi respons karena kehabisan memori saat menambahkan respons.
3200 ErrorGetAADValuesOutOfMemoryConcatPath Tidak bisa mendapatkan nilai header tantangan Azure Active Directory karena kehabisan memori saat menggabungkan jalur.
3201 ErrorGetAADDomainUrlStartPosition Tidak dapat menemukan posisi awal untuk Url domain Azure Active Directory di header tantangan respons yang salah format.
3202 ErrorGetAADDomainUrlStopPosition Tidak dapat menemukan posisi akhir untuk Url domain Azure Active Directory di header tantangan respons yang salah format.
3203 ErrorGetAADDomainUrlMalformatted Header tantangan respons Azure Active Directory salah format dan tidak berisi Url domain AAD.
3204 ErrorGetAADDomainUrlOutOfMemoryAlloc Kehabisan memori saat mengalokasikan buffer untuk Url domain Azure Active Directory.
3205 ErrorGetAADTenantIdOutOfMemoryAlloc Kehabisan memori saat mengalokasikan buffer untuk tenantId Azure Active Directory.
3206 ErrorGetAKVResourceUrlStartPosition Tidak dapat menemukan posisi awal untuk Url sumber daya Azure Key Vault di header tantangan respons yang salah format.
3207 ErrorGetAKVResourceUrlStopPosition Tidak dapat menemukan posisi akhir untuk Url sumber daya Azure Key Vault di header tantangan respons yang salah format.
3208 ErrorGetAKVResourceUrlOutOfMemoryAlloc Kehabisan memori saat mengalokasikan buffer untuk Url sumber daya Azure Key Vault.
3300 ErrorGetTokenOutOfMemoryConcatPath Tidak dapat memperoleh token karena kehabisan memori saat menggabungkan jalur permintaan.
3301 ErrorGetTokenOutOfMemoryConcatBody Tidak dapat memperoleh token karena kehabisan memori saat menggabungkan isi respons.
3302 ErrorGetTokenOutOfMemoryConvertResponseString Tidak dapat memperoleh token karena kehabisan memori saat mengonversi string respons.
3303 ErrorGetTokenBadCredentials Tidak dapat memperoleh token karena kredensial yang salah. Pastikan string kredensial atau sertifikat valid.
3304 ErrorGetTokenFailedToGetToken Meskipun kredensial sudah benar, operasi masih gagal mendapatkan token yang valid.
3305 ErrorGetTokenRejected Token valid tetapi ditolak oleh server.
3306 ErrorGetTokenNotFound Tidak dapat menemukan token sebagai respons.
3307 ErrorGetTokenJsonParser Tidak dapat mengurai respons JSON server.
3308 ErrorGetTokenExtractToken Tidak dapat mengekstrak token dari respons JSON.
3400 ErrorGetKeyByNameOutOfMemoryConvertResponseString Tidak dapat memperoleh kunci berdasarkan nama karena kehabisan memori yang mengonversi string respons.
3401 ErrorGetKeyByNameOutOfMemoryConcatPath Tidak dapat memperoleh kunci berdasarkan nama karena kehabisan memori saat menggabungkan jalur.
3402 ErrorGetKeyByNameOutOfMemoryConcatHeader Tidak dapat memperoleh kunci berdasarkan nama karena kehabisan memori saat menggabungkan header.
3403 ErrorGetKeyByNameNoResponse Tidak dapat memperoleh kunci berdasarkan nama karena tidak ada respons dari server.
3404 ErrorGetKeyByNameJsonParser Tidak dapat memperoleh kunci berdasarkan nama karena gagal mengurai respons JSON.
3405 ErrorGetKeyByNameExtractKeyNode Tidak dapat memperoleh kunci berdasarkan nama karena gagal mengekstrak simpul kunci dari respons.
3406 ErrorGetKeyByNameExtractKeyId Tidak dapat memperoleh kunci berdasarkan nama karena gagal mengekstrak Id kunci dari respons.
3407 ErrorGetKeyByNameExtractKeyType Tidak dapat memperoleh kunci berdasarkan nama karena gagal mengekstrak jenis kunci dari respons.
3408 ErrorGetKeyByNameExtractKeyN Tidak dapat memperoleh kunci berdasarkan nama karena gagal mengekstrak kunci N dari respons.
3409 ErrorGetKeyByNameBase64DecodeN Tidak dapat memperoleh kunci berdasarkan nama karena gagal mendekode Base64 N.
3410 ErrorGetKeyByNameExtractKeyE Tidak dapat memperoleh kunci berdasarkan nama karena gagal mengekstrak kunci E dari respons.
3411 ErrorGetKeyByNameBase64DecodeE Tidak dapat memperoleh kunci berdasarkan nama karena gagal mendekode Base64 E.
3412 ErrorGetKeyByNameExtractKeyUri Tidak dapat mengekstrak Uri kunci dari respons.
3500 ErrorBackupKeyOutOfMemoryConvertResponseString Tidak dapat mencadangkan kunci karena kehabisan memori saat mengonversi string respons.
3501 ErrorBackupKeyOutOfMemoryConcatPath Tidak dapat mencadangkan kunci karena kehabisan memori saat menggabungkan jalur.
3502 ErrorBackupKeyOutOfMemoryConcatHeader Tidak dapat mencadangkan kunci karena kehabisan memori saat menggabungkan header permintaan.
3503 ErrorBackupKeyNoResponse Tidak dapat mencadangkan kunci karena tidak ada respons dari server.
3504 ErrorBackupKeyJsonParser Tidak dapat mencadangkan kunci karena gagal mengurai respons JSON.
3505 ErrorBackupKeyExtractValue Tidak dapat mencadangkan kunci karena gagal mengekstrak nilai dari respons JSON.
3506 ErrorBackupKeyBase64DecodeValue Tidak dapat mencadangkan kunci karena gagal mendekode Base64 bidang nilai.
3600 ErrorWrapKeyOutOfMemoryConvertResponseString Tidak dapat membungkus kunci karena kehabisan memori saat mengonversi string respons.
3601 ErrorWrapKeyOutOfMemoryConcatPath Tidak dapat membungkus kunci karena kehabisan memori saat menggabungkan jalur.
3602 ErrorWrapKeyOutOfMemoryConcatHeader Tidak dapat membungkus kunci karena kehabisan memori saat menggabungkan header.
3603 ErrorWrapKeyOutOfMemoryConcatBody Tidak dapat membungkus kunci karena kehabisan memori saat menggabungkan isi.
3604 ErrorWrapKeyOutOfMemoryConvertEncodedBody Tidak dapat membungkus kunci karena kehabisan memori saat mengonversi isi yang dikodekan.
3605 ErrorWrapKeyBase64EncodeKey Tidak dapat membungkus kunci karena gagal mengodekan kunci Base64.
3606 ErrorWrapKeyBase64DecodeValue Tidak dapat membungkus kunci karena gagal mendekode Base64 nilai respons.
3607 ErrorWrapKeyJsonParser Tidak dapat membungkus kunci karena gagal mengurai respons JSON.
3608 ErrorWrapKeyExtractValue Tidak dapat membungkus kunci karena gagal mengekstrak nilai dari respons.
3609 ErrorWrapKeyNoResponse Tidak dapat membungkus kunci karena tidak ada respons dari server.
3700 ErrorUnwrapKeyOutOfMemoryConvertResponseString Tidak dapat membongkar kunci karena kehabisan memori saat mengonversi string respons.
3701 ErrorUnwrapKeyOutOfMemoryConcatPath Tidak dapat membuka bungkus kunci karena kehabisan memori saat menggabungkan jalur.
3702 ErrorUnwrapKeyOutOfMemoryConcatHeader Tidak dapat membuka bungkus kunci karena kehabisan memori saat menggabungkan header.
3703 ErrorUnwrapKeyOutOfMemoryConcatBody Tidak dapat membuka bungkus kunci karena kehabisan memori saat menggabungkan isi.
3704 ErrorUnwrapKeyOutOfMemoryConvertEncodedBody Tidak dapat membuka bungkus kunci karena kehabisan memori saat mengonversi isi yang dikodekan.
3705 ErrorUnwrapKeyBase64EncodeKey Tidak dapat membuka bungkus kunci karena gagal mengodekan kunci Base64.
3706 ErrorUnwrapKeyBase64DecodeValue Tidak dapat membuka bungkus kunci karena gagal mendekode Base64 nilai respons.
3707 ErrorUnwrapKeyJsonParser Tidak dapat membuka bungkus kunci karena gagal mengekstrak nilai dari respons.
3708 ErrorUnwrapKeyExtractValue Tidak dapat membuka bungkus kunci karena gagal mengekstrak nilai dari respons.
3709 ErrorUnwrapKeyNoResponse Tidak dapat membuka bungkus kunci karena tidak ada respons dari server.
3800 ErrorSecretAuthParamsGetRequestBody Kesalahan saat membuat isi permintaan menggunakan AAD clientId dan rahasia.
3801 ErrorJWTTokenCreateHeader Kesalahan saat membuat header token JWT untuk autentikasi dengan AAD.
3802 ErrorJWTTokenCreatePayloadGUID Kesalahan saat membuat GUID untuk payload token JWT untuk autentikasi dengan AAD.
3803 ErrorJWTTokenCreatePayload Kesalahan saat membuat payload token JWT untuk autentikasi dengan AAD.
3804 ErrorJWTTokenCreateSignature Kesalahan saat membuat tanda tangan token JWT untuk autentikasi dengan AAD.
3805 ErrorJWTTokenSignatureHashAlg Kesalahan saat mendapatkan algoritma hash SHA256 untuk autentikasi dengan AAD.
3806 ErrorJWTTokenSignatureHash Kesalahan saat membuat hash SHA256 untuk autentikasi token JWT dengan AAD.
3807 ErrorJWTTokenSignatureSignHash Kesalahan saat menandatangani hash token JWT untuk autentikasi dengan AAD.
3808 ErrorJWTTokenCreateToken Kesalahan saat membuat token JWT untuk autentikasi dengan AAD.
3809 ErrorPfxCertAuthParamsImportPfx Kesalahan mengimpor sertifikat Pfx untuk autentikasi dengan AAD.
3810 ErrorPfxCertAuthParamsGetThumbprint Kesalahan saat mendapatkan thumbprint dari sertifikat Pfx untuk autentikasi dengan AAD.
3811 ErrorPfxCertAuthParamsGetPrivateKey Kesalahan saat mendapatkan kunci privat dari sertifikat Pfx untuk autentikasi dengan AAD.
3812 ErrorPfxCertAuthParamsSignAlg Kesalahan saat mendapatkan algoritma penandatanganan RSA untuk autentikasi sertifikat Pfx dengan AAD.
3813 ErrorPfxCertAuthParamsImportForSign Kesalahan saat mengimpor kunci privat Pfx untuk penandatanganan RSA untuk autentikasi dengan AAD.
3814 ErrorPfxCertAuthParamsCreateRequestBody Kesalahan saat membuat isi permintaan dari sertifikat Pfx untuk autentikasi dengan AAD.
3815 ErrorPEMCertAuthParamsGetThumbprint Kesalahan Base64 mendekode Thumbprint untuk autentikasi dengan AAD.
3816 ErrorPEMCertAuthParamsGetPrivateKey Kesalahan mendapatkan kunci privat RSA dari PEM untuk autentikasi dengan AAD.
3817 ErrorPEMCertAuthParamsSignAlg Kesalahan saat mendapatkan algoritma penandatanganan RSA untuk autentikasi kunci privat PEM dengan AAD.
3818 ErrorPEMCertAuthParamsImportForSign Kesalahan saat mengimpor kunci privat PEM untuk penandatanganan RSA untuk autentikasi dengan AAD.
3819 ErrorPEMCertAuthParamsCreateRequestBody Kesalahan saat membuat isi permintaan dari kunci privat PEM untuk autentikasi dengan AAD.
3820 ErrorLegacyPrivateKeyAuthParamsSignAlg Kesalahan saat mendapatkan algoritma penandatanganan RSA untuk autentikasi kunci privat Warisan dengan AAD.
3821 ErrorLegacyPrivateKeyAuthParamsImportForSign Kesalahan mengimpor Kunci privat warisan untuk penandatanganan RSA untuk autentikasi dengan AAD.
3822 ErrorLegacyPrivateKeyAuthParamsCreateRequestBody Kesalahan saat membuat isi permintaan dari Kunci privat warisan untuk autentikasi dengan AAD.
3900 ErrorAKVDoesNotExist Kesalahan nama internet tidak teratasi. Ini biasanya menunjukkan Azure Key Vault dihapus.
4000 ErrorCreateKeyVaultRetryManagerOutOfMemory Tidak dapat membuat RetryManager untuk operasi AKV karena kehabisan memori.

Jika Anda tidak melihat kode kesalahan Anda dalam tabel ini, berikut adalah beberapa alasan lain kesalahan mungkin terjadi:

  • Anda mungkin tidak memiliki akses Internet dan tidak dapat mengakses Azure Key Vault Anda. Periksa koneksi Internet Anda.

  • Layanan Azure Key Vault mungkin tidak berfungsi. Coba lagi di lain waktu.

  • Anda mungkin telah menghilangkan kunci asimetris dari Azure Key Vault atau SQL Server. Pulihkan kunci.

  • Jika Anda menerima kesalahan "Tidak dapat memuat pustaka", pastikan Anda memiliki versi Visual Studio C++ yang sesuai yang dapat didistribusikan ulang berdasarkan versi SQL Server yang Anda jalankan. Tabel di bawah ini menentukan versi mana yang akan diinstal dari Pusat Unduhan Microsoft.

Log peristiwa Windows juga mencatat kesalahan yang terkait dengan Konektor SQL Server, yang dapat membantu konteks tambahan tentang mengapa kesalahan benar-benar terjadi. Sumber dalam Log Peristiwa Aplikasi Windows akan menjadi "Konektor SQL Server untuk Microsoft Azure Key Vault".

Pustaka Runtime C++ untuk Konektor SQL Server 1.0.5.0

Versi SQL Server Tautan Penginstalan yang Dapat Didistribusikan Ulang jika menggunakan Konektor SQL Server 1.0.5.0
2008, 2008 R2, 2012, 2014 Paket Visual C++ Dapat Didistribusikan untuk Visual Studio 2013
2016, 2017, 2019 Visual C++ Dapat Didistribusikan Ulang untuk Visual Studio 2015

Pustaka Runtime C++ untuk Konektor SQL Server 1.0.4.0

Versi SQL Server Tautan Penginstalan yang Dapat Didistribusikan Ulang jika menggunakan Konektor SQL Server 1.0.4.0
2008, 2008 R2, 2012, 2014, 2016, 2017, 2019 Paket Visual C++ Dapat Didistribusikan untuk Visual Studio 2013

Referensi Tambahan

Selengkapnya tentang Manajemen Kunci yang Dapat Diperluas:

Enkripsi SQL yang mendukung EKM:

Perintah Transact-SQL Terkait:

Dokumentasi Azure Key Vault:

Lihat juga

Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault
Menggunakan Konektor SQL Server dengan Fitur Enkripsi SQL
Opsi Konfigurasi Server yang diaktifkan penyedia EKM
Langkah-langkah Penyiapan untuk Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault

Untuk contoh skrip tambahan, lihat blog di Enkripsi Data Transparan SQL Server dan Manajemen Kunci yang Dapat Diperluas dengan Azure Key Vault