Jelszavak programozott módosítása

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

OLE DB-illesztő letöltése

Az SQL Server 2005 (9.x) előtt, amikor egy felhasználó jelszavaja lejárt, csak egy adminisztrátor állíthatta vissza. Az SQL Server 2005-től (9.x) kezdve az OLE DB Driver for SQL Server támogatja a jelszó lejáratának programozott kezelését az OLE DB Driveren keresztül, valamint az SQL Server bejelentkezési ablakainak módosításaival.

Note

Lehetőség szerint kérje a felhasználókat, hogy adják meg a hitelesítő adataikat a futás közben, és kerüld a titkosítási adatokat tartós formátumban tárolni. Ha meg kell őrizned a hitelesítésüket, akkor a Win32 kriptos API-val kell titkosítanod őket. További információért a jelszavak használatáról lásd: Strong Passwords.

SQL Server bejelentkezési hibakódok

Ha hitelesítési problémák miatt nem lehet kapcsolatot létrehozni, az alkalmazás számára elérhető lesz az alábbi SQL Server hibakódok egyike, hogy segítse a diagnosztikát és a helyreállítást.

SQL Server hibakód Hibaüzenet
15113 Bejelentkezés sikertelen volt a '%.*ls' felhasználó esetében Ok: Jelszó ellenőrzése sikertelen. A fiók le van zárva.
18463 A (z)%.*ls felhasználó bejelentkezése sikertelen volt. Ok: A jelszó módosítása nem sikerült. A jelszó jelenleg nem használható.
18464 A (z)%.*ls felhasználó bejelentkezése sikertelen volt. Ok: A jelszó módosítása nem sikerült. A jelszó nem felel meg a szabályzat követelményeinek, mert túl rövid.
18465 A (z)%.*ls felhasználó bejelentkezése sikertelen volt. Ok: A jelszó módosítása nem sikerült. A jelszó nem felel meg a szabályzati követelményeknek, mert túl hosszú.
18466 A (z)%.*ls felhasználó bejelentkezése sikertelen volt. Ok: A jelszó módosítása nem sikerült. A jelszó nem felel meg a szabályzat követelményeinek, mert nem elég bonyolult.
18467 A (z)%.*ls felhasználó bejelentkezése sikertelen volt. Ok: A jelszó módosítása nem sikerült. A jelszó nem felel meg a jelszószűrő DLL követelményeinek.
18468 A (z)%.*ls felhasználó bejelentkezése sikertelen volt. Ok: A jelszó módosítása nem sikerült. Váratlan hiba történt a jelszó érvényesítése során.
18487 A (z)%.*ls felhasználó bejelentkezése sikertelen volt. Ok: A fiók jelszava lejárt.
18488 A (z)%.*ls felhasználó bejelentkezése sikertelen volt. Ok: A fiók jelszavát módosítani kell.

OLE DB meghajtó az SQL Serverhez

Az OLE DB Driver for SQL Server támogatja a jelszó lejáratát felhasználói felületen és programozási módon.

OLE DB felhasználói felület jelszó lejárata

Az OLE DB Driver for SQL Server támogatja a jelszó lejáratát az SQL Server bejelentkezési ablakainak módosításaival. Ha DBPROP_INIT_PROMPT értéke DBPROMPT_NOPROMPT-re van állítva, az első kapcsolati próbálkozás sikertelen, ha a jelszó lejárt.

Ha DBPROP_INIT_PROMPT más értékre van beállítva, a felhasználó meglátja a SQL Server Bejelentkezés párbeszédet, függetlenül attól, hogy a jelszó lejárt-e vagy sem. A felhasználó rákattinthat az Opciók gombra, és bejelölheti a Jelszó módosítását , hogy megváltoztassa a jelszót.

Ha a felhasználó az OK-ra kattint, és a jelszó lejárt, az SQL Server arra kéri a felhasználót, hogy adjon be és erősítse meg az új jelszót a Change SQL Server Password párbeszéd segítségével.

OLE DB prompt viselkedése és zárt fiókok

A kapcsolati próbálkozások kudarcot okozhatnak, mert a fiók zárolva van. Ha ez az SQL Server bejelentkezési párbeszéd megjelenítése után történik, a szerver hibaüzenete megjelenik a felhasználónak, és a csatlakozási kísérlet megszakításra kerül. Ez előfordulhat az Change SQL Server jelszó párbeszéd megjelenítése után is, ha a felhasználó rossz értéket ír be a régi jelszóra. Ebben az esetben ugyanaz a hibaüzenet jelenik meg, és a csatlakozási kísérlet megszakításra kerül.

OLE DB kapcsolati csoportosítás, jelszó lejárata és zárolt fiókok

Egy fiókot lezárhatnak, vagy a jelszó lejárhat, amíg a kapcsolat még aktív a kapcsolati poolban. A szerver kétszer is ellenőrizi a lejárt jelszavakat és a zárolt fiókokat. Az első az, amikor először jön létre egy kapcsolat. A második alkalom a kapcsolat visszaállításakor történik, amikor a kapcsolatot a medencéből veszik el.

Ha a visszaállítási kísérlet sikertelenül működik, a kapcsolat eltávolítódik a poolból, és hiba jelenik meg.

OLE DB Programmatic Password Expire

A OLE DB Driver for SQL Server támogatja a jelszó lejáratát a SSPROP_AUTH_OLD_PASSWORD (VT_BSTR típus) tulajdonság hozzáadásával, amelyet a DBPROPSET_SQLSERVERDBINIT tulajdonsághalmazhoz adtak.

A meglévő "Jelszó" tulajdonság DBPROP_AUTH_PASSWORD-re utal, és az új jelszó tárolására szolgál.

Note

A kapcsolati karakterlánc-ban a "Old Password" tulajdonság beállítja a SSPROP_AUTH_OLD_PASSWORD-ot, ami a jelenlegi (esetleg lejárt) jelszó, amely nem elérhető szolgáltató string tulajdonságon keresztül.

A szolgáltató nem tartja fenn az ingatlan értékét. Amikor ez a tulajdonság be van állítva, a szolgáltató nem használja az első kapcsolat poolát, mert új kapcsolat keletkezik. Ha a jelszóváltás sikeres, a jelenlegi kapcsolatot nem lehet újrahasználni, mivel az továbbra is tartalmazza a régi jelszót, amely a jelszó megváltoztatása után érvénytelenné válik. Ha a bejelentkezés sikeres, a szolgáltató töröli ezt az ingatlant. A későbbi próbálkozások a régi jelszó visszaszerzésére VT_EMPTY.

Note

SSPROP_AUTH_OLD_PASSWORD soha nem szabad fenntartani, mivel csak akkor használják, ha egy jelszó lejárt.

Fontos megjegyezni, hogy amikor a "Régi jelszó" tulajdonságot beállítják, a szolgáltató feltételezi, hogy megpróbálják megváltoztatni a jelszót, hacsak nincs Windows hitelesítés is megadva, amikor mindig az elsőbbséget élvezi.

Ha Windows hitelesítést használnak, a régi jelszó megadása vagy DB_E_ERRORSOCCURRED vagy DB_S_ERRORSOCCURRED eredményt eredményez, attól függően, hogy a régi jelszót KÖTELEZETTNEK vagy OPCIONÁLISNAK adták-e meg, és a dwStatusban a DBPROPSTATUS_CONFLICTINGBADVALUE státuszérték jelenik meg. Ezt akkor észlelik, amikor az IDBInitialize::Initialize hívást kapjuk.

Ha a jelszó módosítási kísérlete váratlanul kudarcot vall, a szerver 18468-as hibakódot ad vissza. A csatlakozási kísérletből egy szokásos OLEDB hiba jelenik meg.

További információért a DBPROPSET_SQLSERVERDBINIT tulajdonsághalmazról lásd: Inicializációs és engedélyezési tulajdonságok.