Mengubah Kata Sandi Secara Terprogram
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Sebelum SQL Server 2005 (9.x), ketika kata sandi pengguna kedaluwarsa, hanya administrator yang dapat meresetnya. Dimulai dengan SQL Server 2005 (9.x), Driver OLE DB untuk SQL Server mendukung penanganan kedaluwarsa kata sandi secara terprogram melalui Driver OLE DB, dan melalui perubahan pada kotak dialog Masuk SQL Server.
Catatan
Jika memungkinkan, minta pengguna untuk memasukkan kredensial mereka pada waktu proses dan menghindari penyimpanan kredensial mereka dalam format yang bertahan. Jika Anda harus mempertahankan kredensialnya, Anda harus mengenkripsinya menggunakan API kripto Win32. Untuk informasi selengkapnya tentang penggunaan kata sandi, lihat Kata Sandi Yang Kuat.
Kode Kesalahan Masuk SQL Server
Ketika koneksi tidak dapat dibuat karena masalah autentikasi, salah satu kode kesalahan SQL Server berikut akan tersedia untuk aplikasi untuk membantu diagnosis dan pemulihan.
Kode Kesalahan SQL Server | Pesan kesalahan |
---|---|
15113 | Gagal masuk untuk pengguna '%.*ls' Alasan: Validasi kata sandi gagal. Akun terkunci. |
18463 | Gagal masuk untuk pengguna '%.*ls'. Alasan: Perubahan kata sandi gagal. Kata sandi tidak dapat digunakan saat ini. |
18464 | Gagal masuk untuk pengguna '%.*ls'. Alasan: Perubahan kata sandi gagal. Kata sandi tidak memenuhi persyaratan kebijakan karena terlalu singkat. |
18465 | Gagal masuk untuk pengguna '%.*ls'. Alasan: Perubahan kata sandi gagal. Kata sandi tidak memenuhi persyaratan kebijakan karena terlalu panjang. |
18466 | Gagal masuk untuk pengguna '%.*ls'. Alasan: Perubahan kata sandi gagal. Kata sandi tidak memenuhi persyaratan kebijakan karena tidak cukup kompleks. |
18467 | Gagal masuk untuk pengguna '%.*ls'. Alasan: Perubahan kata sandi gagal. Kata sandi tidak memenuhi persyaratan DLL filter kata sandi. |
18468 | Gagal masuk untuk pengguna '%.*ls'. Alasan: Perubahan kata sandi gagal. Terjadi kesalahan tak terduga selama validasi kata sandi. |
18487 | Gagal masuk untuk pengguna '%.*ls'. Alasan: Kata sandi akun telah kedaluwarsa. |
18488 | Gagal masuk untuk pengguna '%.*ls'. Alasan: Kata sandi akun harus diubah. |
Menggunakan ADO dengan Driver OLE DB untuk SQL Server
Driver OLE DB untuk SQL Server mendukung kedaluwarsa kata sandi melalui antarmuka pengguna dan secara terprogram.
Kedaluwarsa Kata Sandi Antarmuka Pengguna OLE DB
Driver OLE DB untuk SQL Server mendukung kedaluwarsa kata sandi melalui perubahan yang dilakukan pada kotak dialog Masuk SQL Server. Jika nilai DBPROP_INIT_PROMPT diatur ke DBPROMPT_NOPROMPT, upaya koneksi awal akan gagal jika kata sandi telah kedaluwarsa.
Jika DBPROP_INIT_PROMPT telah diatur ke nilai lain, pengguna melihat dialog Masuk SQL Server, terlepas dari apakah kata sandi telah kedaluwarsa atau tidak. Pengguna dapat mengklik tombol Opsi dan mencentang Ubah Kata Sandi untuk mengubah kata sandi.
Jika pengguna mengklik OK dan kata sandi telah kedaluwarsa, SQL Server meminta pengguna untuk memasukkan dan mengonfirmasi kata sandi baru menggunakan dialog Ubah Kata Sandi SQL Server.
Perilaku Prompt OLE DB dan Akun Terkunci
Upaya koneksi mungkin gagal karena akun dikunci. Jika ini terjadi setelah tampilan dialog Masuk SQL Server, pesan kesalahan server ditampilkan kepada pengguna dan upaya koneksi dibatalkan. Ini mungkin juga terjadi setelah tampilan dialog Ubah Kata Sandi SQL Server jika pengguna memasukkan nilai buruk untuk kata sandi lama. Dalam hal ini pesan kesalahan yang sama ditampilkan, dan upaya koneksi dibatalkan.
Pengumpulan Koneksi OLE DB, Kedaluwarsa Kata Sandi, dan Akun Terkunci
Akun mungkin dikunci atau kata sandinya mungkin kedaluwarsa saat koneksi masih aktif di kumpulan koneksi. Server memeriksa kata sandi yang kedaluwarsa dan akun terkunci pada dua kesempatan. Yang pertama adalah ketika koneksi pertama kali dibuat. Kesempatan kedua adalah setelah reset koneksi, ketika koneksi diambil dari kumpulan.
Ketika upaya reset gagal, koneksi dihapus dari kumpulan dan kesalahan dikembalikan.
Kedaluwarsa Kata Sandi Terprogram OLE DB
Driver OLE DB untuk SQL Server mendukung kedaluwarsa kata sandi melalui penambahan properti SSPROP_AUTH_OLD_PASSWORD (jenis VT_BSTR) yang telah ditambahkan ke kumpulan properti DBPROPSET_SQLSERVERDBINIT.
Properti "Kata Sandi" yang ada mengacu pada DBPROP_AUTH_PASSWORD dan digunakan untuk menyimpan kata sandi baru.
Catatan
Dalam string koneksi, properti "Kata Sandi Lama" menetapkan SSPROP_AUTH_OLD_PASSWORD, yang merupakan kata sandi saat ini (mungkin kedaluwarsa) yang tidak tersedia melalui properti string penyedia.
Penyedia tidak mempertahankan nilai properti ini. Ketika properti ini diatur, penyedia tidak menggunakan kumpulan koneksi untuk koneksi pertama karena koneksi baru akan terjadi. Jika perubahan kata sandi berhasil, koneksi saat ini tidak dapat digunakan kembali karena masih berisi kata sandi lama, yang akan tidak valid setelah perubahan kata sandi. Selain itu, jika login berhasil, penyedia akan menghapus properti ini. Upaya berikutnya untuk mengambil VT_EMPTY pengembalian kata sandi lama.
Catatan
SSPROP_AUTH_OLD_PASSWORD tidak boleh dipertahankan karena hanya digunakan ketika kata sandi telah kedaluwarsa.
Perhatikan bahwa setiap kali properti "Kata Sandi Lama" diatur, penyedia mengasumsikan bahwa upaya untuk mengubah kata sandi sedang dibuat, kecuali Autentikasi Windows juga ditentukan, dalam hal ini selalu diutamakan.
Jika Autentikasi Windows digunakan, menentukan hasil kata sandi lama dalam DB_E_ERRORSOCCURRED atau DB_S_ERRORSOCCURRED tergantung pada apakah kata sandi lama ditentukan sebagai WAJIB atau OPSIONAL masing-masing, dan nilai status DBPROPSTATUS_CONFLICTINGBADVALUE dikembalikan dalam dwStatus. Ini terdeteksi ketika IDBInitialize::Initialize dipanggil.
Jika upaya untuk mengubah kata sandi gagal secara tiba-tiba, server mengembalikan kode kesalahan 18468. Kesalahan OLEDB standar dikembalikan dari upaya koneksi.
Untuk informasi selengkapnya tentang kumpulan properti DBPROPSET_SQLSERVERDBINIT, lihat Properti Inisialisasi dan Otorisasi.