Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformní systém (PDW)
Před SQL Server 2005 (9.x) mohl po vypršení uživatelského hesla resetovat pouze administrátor. Od SQL Server 2005 (9.x) podporuje OLE DB Driver for SQL Server programové řešení expirace hesel pomocí OLE DB Driver a změny v dialogových oknech SQL Server Login.
Note
Pokud je to možné, vyzvejte uživatele k zadání přihlašovacích údajů za běhu a vyhněte se jejich ukládání v trvalém formátu. Pokud musíte zachovat jejich přihlašovací údaje, měli byste je zašifrovat pomocí kryptografického API Win32. Pro více informací o používání hesel viz Silná hesla.
Chybové kódy přihlášení SQL Server
Pokud nelze spojení navázat kvůli problémům s autentizací, aplikace má k dispozici jeden z následujících chybových kódů SQL Server, který pomůže s diagnostikou a obnovou.
| Chybový kód SQL Server | Zpráva o chybě |
|---|---|
| 15113 | Přihlášení pro uživatele%.*ls' selhalo. Důvod: ověření hesla selhalo. Účet je zablokovaný. |
| 18463 | Přihlášení uživatele%.*ls se nezdařilo. Důvod: Změna hesla se nezdařila. Heslo nelze v tuto chvíli použít. |
| 18464 | Přihlášení uživatele%.*ls se nezdařilo. Důvod: Změna hesla se nezdařila. Heslo nesplňuje požadavky zásad, protože je příliš krátké. |
| 18465 | Přihlášení uživatele%.*ls se nezdařilo. Důvod: Změna hesla se nezdařila. Heslo nesplňuje požadavky politiky, protože je příliš dlouhé. |
| 18466 | Přihlášení uživatele%.*ls se nezdařilo. Důvod: Změna hesla se nezdařila. Heslo nesplňuje požadavky zásad, protože není dostatečně složité. |
| 18467 | Přihlášení uživatele%.*ls se nezdařilo. Důvod: Změna hesla se nezdařila. Heslo nesplňuje požadavky filtru hesel DLL. |
| 18468 | Přihlášení uživatele%.*ls se nezdařilo. Důvod: Změna hesla se nezdařila. Během ověřování hesla došlo k neočekávané chybě. |
| 18487 | Přihlášení uživatele%.*ls se nezdařilo. Důvod: Platnost hesla účtu vypršela. |
| 18488 | Přihlášení uživatele%.*ls se nezdařilo. Důvod: Heslo účtu se musí změnit. |
Ovladač OLE DB pro SQL Server
OLE DB Driver for SQL Server podporuje vypršení hesla prostřednictvím uživatelského rozhraní a programovaně.
Vypršení hesla uživatelského rozhraní OLE DB
OLE DB Driver for SQL Server podporuje vypršení platnosti hesla prostřednictvím změn provedených v dialogových oknech SQL Server Login. Pokud je hodnota DBPROP_INIT_PROMPT nastavena na DBPROMPT_NOPROMPT, počáteční pokus o připojení selže, pokud heslo vyprší.
Pokud DBPROP_INIT_PROMPT nastaveno na jinou hodnotu, uživatel vidí SQL Server Login dialog, bez ohledu na to, zda heslo vypršelo nebo ne. Uživatel může kliknout na tlačítko Možnosti a zaškrtnout Změnit heslo pro změnu hesla.
Pokud uživatel klikne na OK a heslo vypršelo, SQL Server ho vyzve k zadání a potvrzení nového hesla pomocí dialogu Změnit heslo SQL Server.
Chování promptů v OLE DB a zamčené účty
Pokusy o připojení mohou selhat kvůli zamčení účtu. Pokud k tomu dojde po zobrazení dialogu SQL Server Login, zobrazí se uživateli chybová zpráva serveru a pokus o připojení je přerušen. Může se také objevit po zobrazení dialogu Změnit heslo SQL Server, pokud uživatel zadá špatnou hodnotu pro staré heslo. V tomto případě se zobrazí stejná chybová zpráva a pokus o připojení je přerušen.
Poolování spojení OLE DB, vypršení hesla a zamčené účty
Účet může být zamčen nebo jeho heslo může vypršet, zatímco je spojení stále aktivní v poolu připojení. Server dvakrát kontroluje vypršená hesla a uzamčené účty. První je, když je spojení poprvé vytvořeno. Podruhé je to při resetu připojení, kdy je spojení odebráno z poolu.
Když pokus o reset selže, spojení je z poolu odstraněno a chyba se vrátí.
Expirace programatického hesla v OLE DB
OLE DB Driver for SQL Server podporuje vypršení hesla přidáním vlastnosti SSPROP_AUTH_OLD_PASSWORD (typ VT_BSTR), která byla přidána do sady DBPROPSET_SQLSERVERDBINIT.
Stávající vlastnost "Password" odkazuje na DBPROP_AUTH_PASSWORD a slouží k uložení nového hesla.
Note
V připojovací řetězec vlastnost "Old Password" nastavuje SSPROP_AUTH_OLD_PASSWORD, což je aktuální (možná expirované) heslo, které není dostupné přes vlastnost řetězce poskytovatele.
Poskytovatel neudržuje hodnotu této nemovitosti. Když je tato vlastnost nastavena, poskytovatel nepoužívá pool připojení pro první připojení, protože nastane nové připojení. Pokud je změna hesla úspěšná, současné připojení nelze znovu použít, protože stále obsahuje staré heslo, které po změně hesla bude neplatné. Pokud přihlášení uspěje, poskytovatel tuto nemovitost vymaže. Následné pokusy o získání starého hesla vracejí VT_EMPTY.
Note
SSPROP_AUTH_OLD_PASSWORD by nikdy neměla být trvalá, protože se používá pouze tehdy, když heslo vyprší.
Všimněte si, že kdykoli je vlastnost "Staré heslo" nastavena, poskytovatel předpokládá, že se pokusí heslo změnit, pokud není také specifikováno Windows Authentication, v takovém případě má vždy přednost.
Pokud je použito Windows autentizace, zadání starého hesla vede buď k DB_E_ERRORSOCCURRED, nebo DB_S_ERRORSOCCURRED v závislosti na tom, zda bylo staré heslo zadáno jako POVINNÉ nebo VOLITELNÉ, a hodnota stavu DBPROPSTATUS_CONFLICTINGBADVALUE se vrací v dwStatus. Toto je detekováno, když je vyvoláno IDBInitialize::Initialize .
Pokud pokus o změnu hesla nečekaně selže, server vrátí chybový kód 18468. Při pokusu o připojení se vrátí standardní chyba OLEDB.
Pro více informací o sadě DBPROPSET_SQLSERVERDBINIT vlastností viz Inicializace a autorizační vlastnosti.