Bagikan melalui


Mengubah Kata Sandi Secara Terprogram

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Unduh driver OLE DB

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.

Lihat Juga

Driver OLE DB untuk Fitur SQL Server