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
- Menghentikan layanan SQL Server menggunakan Pengelola Konfigurasi SQL Server
- Hapus instalan versi lama menggunakan Panel Kontrol\Programs\Programs and Features
- Nama aplikasi: SQL Server Connector untuk Microsoft Azure Key Vault
- Versi: 15.0.300.96 (atau lebih lama)
- Tanggal file DLL: 30/01/2018 (atau lebih lama)
- Menginstal (meningkatkan) SQL Server Connector untuk Microsoft Azure Key Vault baru
- Versi: 15.0.2000.440
- Tanggal file DLL: 11/09/2020
- Memulai layanan SQL Server
- Database terenkripsi pengujian dapat diakses
Pemulihan
Menghentikan layanan SQL Server menggunakan Pengelola Konfigurasi SQL Server
Hapus instalan versi baru menggunakan Panel Kontrol\Programs\Programs and Features
- Nama aplikasi: SQL Server Connector untuk Microsoft Azure Key Vault
- Versi: 15.0.2000.440
- Tanggal file DLL: 24/11/2020
Menginstal versi lama SQL Server Connector untuk Microsoft Azure Key Vault
- Versi: 15.0.300.96
- Tanggal file DLL: 30/01/2018
Memulai layanan SQL Server
Periksa apakah database yang menggunakan TDE dapat diakses
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
- Saat ini: 1.0.5.0 (versi 15.0.2000.440) – Tanggal file 24 November 2020
- 1.0.5.0 (versi 15.0.300.96) – Tanggal file 30 Januari 2018
- 1.0.4.0: (versi 13.0.811.168)
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 diberikanALTER SETTINGS
izin tingkat server. IzinALTER 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?
Buka portal Microsoft Azure.
Di sudut kanan atas halaman, pilih ikon pengaturan, atau profil pengguna Anda.
Pada halaman Direktori + langganan , pilih Semua Direktori untuk melihat semua direktori Microsoft Entra milik Anda.
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:
Referensi Cmdlet PowerShell Azure Key Vault
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk