Помилка “login failed for user …”: що робити?, Інші СУБД, Бази даних, статті

Діагностика помилок аутентифікація в SQL Server може виявитися досить проблематичною (і ми працюємо над її поліпшенням J) і цьому є кілька причин. З міркувань безпеки ми не хочемо повертати користувачеві докладний опис проблеми. Більш детальну інформацію про причину помилки можна знайти в журнал реєстрації помилок. Наприклад:

Клієнт отримує повідомлення:

Login failed for user “sa”.

Журнал реєстрації помилок містить наступний запис:

Error: 18456, Severity: 14, State: 8. Login failed for user “sa”. Reason: Password did not match that for the login provided. [CLIENT: <local machine>]

Тут вже є додаткова інформація про причину помилки (неправильний пароль) і про клієнтської машині, з якої намагалися провести аутентифікацію (або local mchine або IP адреса).

Однак деякі причини можуть бути не настільки очевидні. Деякі причини невдалої аутентифікації можна визначити за статусом (State) Помилки. Нижче наведені можливі значення статусу помилки 18456 та їх розшифровка:

































Статус помилки (State)

Опис

1

Стандартний статус

2 and 5

Недействітельний ідентифікатор користувача

6

Спроба використання Windows login імені з SQL аутентифікацією

7

Login блокований (disabled)

8

Пароль не збігається

9

Недействітельний пароль

11 and 12

Дійсний  login, Але відмовлено в доступі до сервера

13

SQL Server сервіс призупинено

18

Необхідна зміна пароля

 

– Помилка із статусом 2 – помилка Windows аутентифікації: віддалений Windows користувач не може бути проасоціювали з Windows користувачем на сервері; помилка зі статусом 5 – помилка SQL аутентифікації: користувач з таким ім’ям не знайдений;

– Аналогічно: помилка зі статусом 9 може відбутися при Windows аутентифікації (на відміну від помилки зі статусом 8 – SQL аутентифікація) – наприклад при спробі аутентифікації з віддаленої машини з іншими вимогами до пароля;

– Більшість проблем виникає з діагностикою причин помилок зі статусом 1, 11 або 12. Найбільш часті їх причини лежать в конфігурації самої машини і Windows конфігурації: брандмауер,  Active Directory і т.д. Щоб зрозуміти причину такої помилки можна скористатися внутрішнім буфером (токаю можливість додана в SQL Server 2005 SP2), який збирає коди помилок повертаються Win API , І відбулися в процесі аутентифікації. Переглянути вміст буфера можна за допомогою наступної команди:

 

Select * from sys.dm_os_ring_buffers

where ring_buffer_type = “RING_BUFFER_SECURITY_ERROR”

 

Результат в XML форматі містить ім’я Win API повернула помилку і код помилки. Наприклад:

 

<Record id=”197″ type=”RING_BUFFER_SECURITY_ERROR” time=”3552445157″>

  <Error>

    <SPID>158</SPID>

    <APIName>NetValidatePwdPolicy</APIName>

    <CallingAPIName>CAPIPwdPolicyManager::ValidatePwdForLogin</CallingAPIName>

    <ErrorCode>0x89B</ErrorCode>

  </Error>

</Record>

 

NetValidatePwdPolicy повернула помилку 89B. Знаючи API і код помилки можна знайти (в msdn, Наприклад) опис її причини:

 

0x89B = 2203 = The password parameter is invalid.

 

Ще однією поширеною причиною помилок аутентифікації зі статусом 12 є SQL Server Endpoints (кінцева точка (?)). Якщо користувач не має прав на Endpoint, Через яку він намагається приєднатися до сервера (а саме: CONNECT ON ENDPOINT), Він отримає помилку зі статусом 12.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*