Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Azure SQL Managed Instance
Menambahkan atau menghilangkan kredensial yang berisi kata sandi yang diperlukan untuk membuka kunci master database (DMK).
Sintaks
sp_control_dbmasterkey_password @db_name = 'db_name'
, @password = 'password'
, @action = { N'add' | N'drop' }
Argumen
Penting
Argumen untuk prosedur tersimpan yang diperluas harus dimasukkan dalam urutan tertentu seperti yang dijelaskan di bagian Sintaks. Jika parameter dimasukkan di luar urutan, pesan kesalahan terjadi.
@db_name= N'db_name'
Menentukan nama database yang terkait dengan kredensial ini. Tidak dapat menjadi database sistem. @db_name adalah nvarchar.
@password= N'password'
Menentukan kata sandi DMK. @password adalah nvarchar.
@action = { N'tambahkan' | N'jatuh' }
Menentukan tindakan untuk kredensial untuk database yang ditentukan di penyimpanan kredensial. Nilai yang diteruskan ke @action adalah nvarchar.
| Tindakan | Deskripsi |
|---|---|
add |
Menentukan bahwa kredensial untuk database yang ditentukan akan ditambahkan ke penyimpanan kredensial. Info masuk berisi kata sandi DMK. |
drop |
Menentukan bahwa kredensial untuk database yang ditentukan akan dihilangkan dari penyimpanan kredensial. |
Keterangan
Ketika SQL Server memerlukan DMK untuk mendekripsi atau mengenkripsi kunci, SQL Server mencoba mendekripsi DMK dengan kunci master layanan (SMK) instans. Jika dekripsi gagal, SQL Server mencari penyimpanan kredensial untuk kredensial yang memiliki GUID keluarga yang sama dengan database yang dibutuhkan kuncinya. SQL Server kemudian mencoba mendekripsi DMK dengan setiap kredensial yang cocok sampai dekripsi berhasil atau tidak ada lagi kredensial.
Perhatian
Jangan membuat kredensial kunci master untuk database yang harus tidak dapat diakses sa dan prinsipal server dengan hak istimewa lainnya. Anda dapat mengonfigurasi database sehingga hierarki kuncinya tidak dapat didekripsi oleh SMK. Opsi ini didukung sebagai pertahanan mendalam untuk database yang berisi informasi terenkripsi yang seharusnya tidak dapat diakses sa atau prinsipal server dengan hak istimewa lainnya. Membuat kredensial untuk database seperti itu menghapus pertahanan mendalam ini, memungkinkan sa dan prinsipal server dengan hak istimewa lainnya untuk mendekripsi database.
Kredensial yang dibuat dengan menggunakan sp_control_dbmasterkey_password terlihat dalam tampilan katalog sys.master_key_passwords . Nama kredensial yang dibuat untuk DMK memiliki format berikut: ##DBMKEY_<database_family_guid>_<random_password_guid>##. Kata sandi disimpan sebagai rahasia kredensial. Setiap kata sandi yang ditambahkan ke penyimpanan kredensial memiliki baris yang cocok di sys.credentials.
Anda tidak dapat menggunakan sp_control_dbmasterkey_password untuk membuat kredensial untuk database sistem berikut: master, , modelmsdb, atau tempdb.
sp_control_dbmasterkey_password tidak memverifikasi bahwa kata sandi dapat membuka DMK dari database yang ditentukan.
Jika Anda menentukan kata sandi yang sudah disimpan dalam kredensial untuk database yang ditentukan, sp_control_dbmasterkey_password gagal.
Dua database dari instans server yang berbeda dapat berbagi GUID keluarga yang sama. Jika ini terjadi, database berbagi catatan DMK yang sama di penyimpanan kredensial.
Parameter yang diteruskan untuk sp_control_dbmasterkey_password tidak muncul dalam jejak.
Saat Anda menggunakan kredensial yang ditambahkan dengan menggunakan sp_control_dbmasterkey_password untuk membuka DMK, DMK dienkripsi ulang oleh SMK. Jika database dalam mode baca-saja, operasi enkripsi ulang gagal, dan DMK tetap tidak terenkripsi. Untuk akses berikutnya ke DMK, Anda harus menggunakan OPEN MASTER KEY pernyataan dan kata sandi. Untuk menghindari penggunaan kata sandi, buat kredensial sebelum Anda memindahkan database ke mode baca-saja.
Potensi masalah kompatibilitas mundur
Saat ini, prosedur tersimpan tidak memeriksa apakah kunci ada. Fungsionalitas ini diizinkan untuk kompatibilitas mundur, tetapi menampilkan peringatan. Perilaku ini tidak digunakan lagi. Dalam rilis mendatang, kunci harus ada dan kata sandi yang digunakan dalam prosedur sp_control_dbmasterkey_password tersimpan harus kata sandi yang sama dengan salah satu kata sandi yang digunakan untuk mengenkripsi DMK.
Izin
Memerlukan keanggotaan dalam peran server tetap sysadmin , atau menjalankan izin langsung pada prosedur tersimpan ini.
Contoh
Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.
J. Membuat kredensial untuk kunci master AdventureWorks
Contoh berikut membuat kredensial untuk AdventureWorks2025 DMK, dan menyimpan kata sandi kunci master sebagai rahasia dalam kredensial. Karena semua parameter yang diteruskan harus sp_control_dbmasterkey_password dari jenis data nvarchar, string teks dikonversi dengan operator Ntransmisi .
EXECUTE sp_control_dbmasterkey_password
@db_name = N'AdventureWorks2022',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4',
@action = N'add';
GO
B. Menghapus kredensial untuk kunci master database
Contoh berikut menghapus kredensial yang dibuat dalam contoh A. Semua parameter diperlukan, termasuk kata sandi.
EXECUTE sp_control_dbmasterkey_password
@db_name = N'AdventureWorks2022',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4',
@action = N'drop';
GO