Bagikan melalui


Pemeliharaan & Pemecahan Masalah SQL Server Connector

Berlaku untuk: SQL Server

Informasi tambahan tentang Konektor SQL Server disediakan dalam artikel 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.

Catatan

Meskipun MICROSOFT Entra ID adalah nama baru untuk Azure Active Directory (Azure AD), untuk mencegah mengganggu lingkungan yang ada, Azure AD masih tetap berada di beberapa elemen yang dikodekan secara permanen seperti bidang UI, penyedia koneksi, kode kesalahan, dan cmdlet. Dalam artikel ini, dua nama tersebut dapat dipertukarkan.

J. Petunjuk Pemeliharaan untuk Konektor SQL Server

Rotasi Kunci

Azure Key Vault mendukung rotasi kunci, yang merupakan proses pembuatan kunci baru dan memperbarui aplikasi untuk menggunakan kunci baru. Rotasi kunci adalah praktik terbaik keamanan yang membantu melindungi data jika kunci disusupi. Konektor SQL Server mendukung rotasi kunci. Kunci lama tidak boleh dihapus karena mungkin diperlukan untuk memulihkan database menggunakan kunci lama. Untuk memutar kunci, ikuti langkah-langkah di Memutar kunci asimetris dengan kunci AKV baru atau versi kunci AKV baru.

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 memutakhirkan ke versi terbaru yang tersedia di Pusat Unduhan Microsoft.

Mutakhirkan

  1. Menghentikan layanan SQL Server menggunakan Pengelola Konfigurasi SQL Server
  2. Hapus instalan versi lama menggunakan Panel Kontrol\Programs\Programs and Features
    1. Nama aplikasi: SQL Server Connector untuk Microsoft Azure Key Vault
    2. Versi: 15.0.300.96 (atau lebih lama)
    3. Tanggal file DLL: 30/01/2018 (atau lebih lama)
  3. Menginstal (meningkatkan) SQL Server Connector untuk Microsoft Azure Key Vault baru
    1. Versi: 15.0.2000.440
    2. Tanggal file DLL: 11/09/2020
  4. Memulai layanan SQL Server
  5. Database terenkripsi pengujian dapat diakses

Pemulihan

  1. Menghentikan layanan SQL Server menggunakan Pengelola Konfigurasi SQL Server

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

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

    1. Versi: 15.0.300.96
    2. Tanggal file DLL: 30/01/2018
  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 instalan 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 ID Microsoft Entra (sebelumnya 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 ID Microsoft Entra 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 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 bisa berbeda (atau sama seperti sebelumnya). Atur izin akses pada vault baru untuk diberikan ke 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 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 kunci 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 Mengakses Azure Key Vault di belakang firewall untuk memastikan aturan yang benar ada.

Bagaimana cara menyambungkan ke Azure Key Vault melalui Server Proksi HTTP(S)? Konektor menggunakan pengaturan konfigurasi Proksi Internet Explorer. Pengaturan ini dapat dikontrol melalui Kebijakan Grup atau melalui Registri, tetapi penting untuk dicatat bahwa pengaturan tersebut bukan pengaturan 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 menghidupkan 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 Konektor SQL Server 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 Microsoft Entra default saya sehingga brankas kunci saya dibuat dalam langganan dan direktori yang sama dengan perwakilan layanan yang saya buat untuk Konektor SQL Server?

Cuplikan layar memperlihatkan langkah-langkah bantuan direktori default perubahan ID Entra Microsoft.

  1. Buka portal Microsoft 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 direktori Microsoft Entra milik Anda.

  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 Microsoft Entra dalam direktori default Anda sehingga berada di direktori yang sama dengan Azure Key Vault yang digunakan nanti.

Untuk mempelajari selengkapnya tentang ID Microsoft Entra, baca Bagaimana langganan Azure terkait dengan ID Microsoft Entra.

C. Penjelasan Kode Kesalahan untuk Konektor SQL Server

Catatan

Meskipun MICROSOFT Entra ID adalah nama baru untuk Azure Active Directory (Azure AD), untuk mencegah mengganggu lingkungan yang ada, Azure AD masih tetap berada di beberapa elemen yang dikodekan secara permanen seperti bidang UI, penyedia koneksi, kode kesalahan, dan cmdlet. Dalam artikel ini, dua nama tersebut dapat dipertukarkan.

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 klien dan rahasia 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 telah 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 ke 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 KesalahanHttpCreateHttpClientOutOfMemory Tidak dapat membuat operasi HttpClient untuk AKV karena kehabisan memori.
3003 KesalahanHttpOpenSession Tidak dapat membuka sesi Http karena kesalahan jaringan.
3004 KesalahanHttpConnectSession Tidak dapat menyambungkan sesi Http karena kesalahan jaringan.
3005 KesalahanHttpAttemptConnect Tidak dapat mencoba sambungan karena kesalahan jaringan.
3006 KesalahanHttpOpenRequest Tidak dapat membuka permintaan karena kesalahan jaringan.
3007 ErrorHttpAddRequestHeader Tidak dapat menambahkan header permintaan.
3008 KesalahanHttpSendRequest 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 KesalahanHttpResponseCodeServerError 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 KesalahanHttpQueryHeaderOutOfMemoryReallocBuffer Tidak dapat mengkueri header respons karena kehabisan memori saat merealokasi buffer.
3017 KesalahanHttpQueryHeaderNotFound Tidak dapat menemukan header kueri dalam respons.
3018 KesalahanHttpQueryHeaderUpdateBufferLength Tidak dapat memperbarui panjang buffer saat mengkueri header respons.
3019 KesalahanHttpReadData 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 KesalahanHttpOperationForbidden 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 KesalahanHttpCreateHttpClientOutOfMemory Tidak dapat membuat operasi HttpClient untuk AKV karena kehabisan memori.
3101 KesalahanHttpOpenSession Tidak dapat membuka sesi Http karena kesalahan jaringan.
3102 KesalahanHttpConnectSession Tidak dapat menyambungkan sesi Http karena kesalahan jaringan.
3103 KesalahanHttpAttemptConnect Tidak dapat mencoba tersambung karena kesalahan jaringan.
3104 KesalahanHttpOpenRequest Tidak dapat membuka permintaan karena kesalahan jaringan.
3105 ErrorHttpAddRequestHeader Tidak dapat menambahkan header permintaan.
3106 KesalahanHttpSendRequest 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 KesalahanHttpResponseCodeServerError 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 KesalahanHttpOperationForbidden 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 KesalahanHttpQueryHeaderOutOfMemoryReallocBuffer Tidak dapat mengkueri header respons karena kehabisan memori saat merealokasi buffer.
3117 KesalahanHttpQueryHeaderNotFound Tidak dapat menemukan header kueri dalam respons.
3118 KesalahanHttpQueryHeaderUpdateBufferLength Tidak dapat memperbarui panjang buffer saat mengkueri header respons.
3119 KesalahanHttpReadData Tidak dapat membaca data respons karena kesalahan jaringan.
3120 ErrorHttpGetResponseOutOfMemoryCreateTempBuffer Tidak dapat mendapatkan isi respons karena kehabisan memori saat membuat buffer sementara.
3121 ErrorHttpGetResponseOutOfMemoryGetResultString Tidak dapat mendapatkan isi respons karena kehabisan memori saat mendapatkan string hasil.
3122 ErrorHttpGetResponseOutOfMemoryAppendResponse Tidak dapat mendapatkan isi respons karena kehabisan memori saat menambahkan respons.
3200 ErrorGetAADValuesOutOfMemoryConcatPath Tidak dapat memperoleh 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 mendapatkan 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 atau sertifikat kredensial 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 bisa mendapatkan 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 bidang nilai Base64.
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 nilai respons Base64.
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 membongkar kunci karena kehabisan memori saat menggabungkan jalur.
3702 ErrorUnwrapKeyOutOfMemoryConcatHeader Tidak dapat membongkar kunci karena kehabisan memori saat menggabungkan header.
3703 ErrorUnwrapKeyOutOfMemoryConcatBody Tidak dapat membongkar kunci karena kehabisan memori saat menggabungkan tubuh.
3704 ErrorUnwrapKeyOutOfMemoryConvertEncodedBody Tidak dapat membongkar kunci karena kehabisan memori saat mengonversi isi yang dikodekan.
3705 ErrorUnwrapKeyBase64EncodeKey Tidak dapat membongkar kunci karena gagal mengodekan kunci Base64.
3706 ErrorUnwrapKeyBase64DecodeValue Tidak dapat membuka bungkus kunci karena gagal mendekode nilai respons Base64.
3707 ErrorUnwrapKeyJsonParser Tidak dapat membongkar kunci karena gagal mengekstrak nilai dari respons.
3708 ErrorUnwrapKeyExtractValue Tidak dapat membongkar kunci karena gagal mengekstrak nilai dari respons.
3709 ErrorUnwrapKeyNoResponse Tidak dapat membongkar 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 saat 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 saat 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 saat 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 diselesaikan. 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 "SQL Server Connector untuk Microsoft Azure Key Vault".

Pustaka Runtime C++ untuk Konektor SQL Server 1.0.5.0

Versi SQL Server Tautan Instal 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 Instal 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 Extensible Key Management:

Enkripsi SQL yang mendukung EKM:

Perintah Transact-SQL terkait:

Dokumentasi Azure Key Vault: