Udostępnij za pośrednictwem


Programowe zmienianie haseł

Przed SQL Server 2005, po wygaśnięciu hasła użytkownika, tylko administrator może zresetować typie.Począwszy od SQL Server 2005, SQL Server obsługuje rodzimymi klientami obsługi wygaśnięcie hasła programowo przez obie SQL Server macierzystego klienta dostawca OLE DB i SQL Server sterownik ODBC macierzystym klienta i poprzez zmiany w SQL Server logowania okien dialogowych.

Ostrzeżenie

Kiedy uruchamiany jest to możliwe, Monituj użytkownikom wprowadzić swoje poświadczenia na czas i uniknąć przechowywania ich poświadczeń w formacie utrwalonej.Jeśli ich poświadczenia muszą zostać zachowane, należy zaszyfrować je za pomocą Win32 crypto API.Aby uzyskać więcej informacji dotyczących używania haseł, zobacz Silne hasła.

Kody błędów logowania programu SQL Server

Gdy nie można nawiązać połączenia z powodu problemów uwierzytelnianie, jeden z następujących kodów błędów programu SQL Server będzie dostępne dla aplikacji do pomocy diagnostyki i odzyskiwanie.

Kod błędu SQL Server

Komunikat o błędzie

15113

Logowanie nie powiodło się dla użytkownika ' %. * ls Przyczyna: Nie można sprawdzić poprawności hasła.Konto jest zablokowane.

18463

Logowanie nie powiodło się dla użytkownika ' %. * ls.Przyczyna: Nie można zmienić hasła.Hasło nie może być używany w tej czas.

18464

Logowanie nie powiodło się dla użytkownika ' %. * ls.Przyczyna: Nie można zmienić hasła.Hasło nie spełnia wymagań zasad, ponieważ jest zbyt krótki.

18465

Logowanie nie powiodło się dla użytkownika ' %. * ls.Przyczyna: Nie można zmienić hasła.Hasło nie spełnia wymagań zasad, ponieważ jest zbyt długa.

18466

Logowanie nie powiodło się dla użytkownika ' %. * ls.Przyczyna: Nie można zmienić hasła.Hasło nie spełnia wymagań zasad, ponieważ nie jest wystarczająco skomplikowane.

18467

Logowanie nie powiodło się dla użytkownika ' %. * ls.Przyczyna: Nie można zmienić hasła.Hasło nie spełnia wymagań biblioteki DLL filtru hasła.

18468

Logowanie nie powiodło się dla użytkownika ' %. * ls.Przyczyna: Nie można zmienić hasła.Wystąpił nieoczekiwany błąd podczas sprawdzania poprawności hasła.

18487

Logowanie nie powiodło się dla użytkownika ' %. * ls.Przyczyna: Hasło konta wygasło.

18488

Logowanie nie powiodło się dla użytkownika ' %. * ls.Przyczyna: Należy zmienić hasło konta.

Aby uzyskać więcej informacji na temat obsługi SQL Server błędów, zobacz Obsługa błędów i komunikatów w aplikacjach.

Dostawca OLE DB programu SQL Server Native Client

SQL Server Macierzystego klienta dostawca OLE DB obsługuje wygaśnięcie hasła, chociaż interfejs użytkownika i programowo.

Wygaśnięcie hasła interfejsu użytkownika DB OLE

SQL Server Macierzystego klienta dostawca OLE DB obsługuje wygaśnięcie hasła poprzez zmiany w SQL Server logowania okien dialogowych.Jeśli wartość DBPROP_INIT_PROMPT jest zestaw do DBPROMPT_NOPROMPT, próba połączenia początkowego zawiedzie, jeżeli hasło wygasło.

Jeśli DBPROP_INIT_PROMPT została ustawiona na inną wartość, użytkownik widzi SQL Server logowania okno dialogowe, niezależnie od tego, czy hasło wygasło.Użytkownik może kliknąć na Opcje przycisk i sprawdź, czy Zmienić hasło do zmiany hasła.

Jeśli użytkownik kliknie przycisk OK i hasło wygasło, SQL Server monituje użytkownika o wprowadź i Potwierdź, używając nowego hasła Zmiana SQL Server hasło okno dialogowe.

Zachowanie monitu DB OLE i zablokowane konta

Próby połączenia może zakończyć się niepowodzeniem ze względu na konto jest zablokowane.W takiej sytuacji po wyświetlania SQL Server logowania okno dialogowe, wyświetlany jest komunikat o błędzie serwera użytkownika i próba połączenia jest przerywana.Może również występować, wyświetlanie następującego Zmiana SQL Server hasło okno dialogowe, jeśli użytkownik wprowadzi Zła wartość dla starego hasła.W tym przypadek jest wyświetlany ten sam komunikat o błędzie, a próba połączenia została przerwana.

Buforowanie połączeń DB OLE, wygaśnięcie hasła i konta zablokowane

Konto może zostać zablokowane lub hasło mogą wygasnąć, gdy połączenie jest wciąż aktywne w puli połączeń.Serwer sprawdza wygasłego hasła i konta zablokowane w odstępie.Pierwsza jest podczas tworzenia połączenia.Jest drugim okazji na zresetowanie połączenia, gdy połączenie jest pobierana z puli.

W przypadku niepowodzenia próby resetowania połączenia jest usuwany z puli i zwracany jest błąd.

OLE DB programowych wygaśnięcie hasła

SQL Server Macierzystego klienta dostawca OLE DB obsługuje wygaśnięcie hasła przez dodanie właściwość SSPROP_AUTH_OLD_PASSWORD (typu VT_BSTR), który został dodany do zestaw właściwość DBPROPSET_SQLSERVERDBINIT.

Istniejące "hasło" Właściwość odnosi się do DBPROP_AUTH_PASSWORD i jest używany do przechowywania nowe hasło.

Ostrzeżenie

W połączeniu z ciąg, "Stare hasło" Właściwość ustawia SSPROP_AUTH_OLD_PASSWORD, który jest bieżące hasło (ewentualnie wygasłe), który nie jest dostępny za pośrednictwem właściwości ciąg dostawca.

Dostawca nie utrzymują wartość tej właściwość.Gdy ta właściwość jest zestaw, dostawca nie używać puli połączeń dla pierwszego połączenia, ponieważ nastąpi nowe połączenie.Jeśli zmiana hasła jest pomyślne, bieżące połączenie nie można użyć ponownie, ponieważ nadal zawiera stare hasło jest nieprawidłowe po zmianie hasła.Ponadto jeśli logowania się powiedzie, dostawca czyści tej właściwość.Kolejne próby pobrania stare hasło zwracają VT_EMPTY.

Ostrzeżenie

SSPROP_AUTH_OLD_PASSWORD nigdy nie powinna utrwalone, ponieważ jest on używany tylko wtedy, gdy hasło wygasło.

Należy zauważyć, że przy każdym "Stare hasło" Właściwość zestaw, dostawca zakłada, że próba zmiany hasła jest dokonywana, chyba że określono także uwierzytelnianie systemu Windows, w którego przypadek go zawsze ma pierwszeństwo.

Jeśli jest używane uwierzytelnianie systemu Windows, określanie wyniki starego hasła w DB_E_ERRORSOCCURRED lub DB_S_ERRORSOCCURRED, w zależności od tego, czy stare hasło określono jako wymagane lub OPCJONALNIE odpowiednio i zwracana jest wartość stanu DBPROPSTATUS_CONFLICTINGBADVALUE w dwStatus.To jest wykrywane po IDBInitialize::Initialize jest wywoływana.

Jeśli próba zmiany hasła nie nieoczekiwanie, serwer zwraca kod błędu 18468.Próba połączenia zostanie zwrócony standardowy błąd OLEDB.

Aby uzyskać więcej informacji na temat zestaw właściwość DBPROPSET_SQLSERVERDBINIT Zobacz Inicjowanie i właściwości autoryzacji.

Sterownik ODBC macierzystym klienta SQL Server

SQL Server Macierzystego klienta dostawca OLE DB obsługuje wygaśnięcie hasła, chociaż interfejs użytkownika i programowo.

Wygaśnięcie hasła interfejsu użytkownika ODBC

SQL Server Sterownik ODBC Klient macierzysty obsługuje wygaśnięcie hasła poprzez zmiany w SQL Server logowania okien dialogowych.

Jeśli SQLDriverConnect nosi nazwę i wartość DriverCompletion jest zestaw do SQL_DRIVER_NOPROMPT, próba połączenia początkowego nie powiedzie się, jeśli hasło wygasło.Przez kolejne wywołania zwracane są wartości SQLSTATE 28000 i wartość kodu błąd macierzysty 18487 SQLError lub SQLGetDiagRec.

Jeśli DriverCompletion została ustawiona na inną wartość, użytkownik widzi SQL Server logowania okno dialogowe, niezależnie od tego, czy hasło wygasło.Użytkownik może kliknąć na Opcje przycisk i sprawdź, czy Zmienić hasło do zmiany hasła.

Jeśli użytkownik kliknie przycisk OK i hasło wygasło, SQL Server monit wpisz i Potwierdź, używając nowego hasła Zmiana SQL Server hasło okno dialogowe.

ODBC Monituj zachowanie i zablokowane konta

Próby połączenia może zakończyć się niepowodzeniem ze względu na konto jest zablokowane.W takiej sytuacji po wyświetlania SQL Server logowania okno dialogowe, wyświetlany jest komunikat o błędzie serwera użytkownika i próba połączenia jest przerywana.Może również występować, wyświetlanie następującego Zmiana SQL Server hasło okno dialogowe, jeśli użytkownik wprowadzi Zła wartość dla starego hasła.W tym przypadek jest wyświetlany ten sam komunikat o błędzie, a próba połączenia została przerwana.

Buforowanie połączeń ODBC, wygaśnięcie hasła i zablokowane konta

Konto może zostać zablokowane lub hasło mogą wygasnąć, gdy połączenie jest wciąż aktywne w puli połączeń.Serwer sprawdza wygasłego hasła i konta zablokowane w odstępie.Pierwsza jest podczas tworzenia połączenia.Jest drugim okazji na zresetowanie połączenia, gdy połączenie jest pobierana z puli.

W przypadku niepowodzenia próby resetowania połączenia jest usuwany z puli i zwracany jest błąd.

ODBC programowych wygaśnięcie hasła

SQL Server Sterownik ODBC Klient macierzysty obsługuje wygaśnięcie hasła przez dodanie atrybut SQL_COPT_SS_OLDPWD, który jest zestaw przed połączeniem się z serwerem przy użyciu SQLzestawConnectAttr funkcja.

Atrybut SQL_COPT_SS_OLDPWD dojścia połączenia odwołuje się do wygasłego hasła.Nie ma związku ciąg atrybutu dla tego atrybutu, jak będzie to kolidować z puli połączeń.Jeśli logowanie powiedzie się, sterownik czyści atrybut.

SQL Server Sterownik ODBC macierzystym klienta czterech przypadków ta funkcja zwraca wartość SQL_ERROR: Wygaśnięcie zasady haseł, hasło konfliktu zasad blokady konta, a właściwość stare hasło jest zestaw podczas korzystania z uwierzytelniania systemu Windows.Sterownik zwraca odpowiednie komunikaty do użytkownika po SQLGetDiagField jest wywoływana.