1с sql ошибка 18456
When a connection attempt is rejected because of an authentication failure that involves a bad password or user name, a message similar to the following is returned to the client: "Login failed for user ''. (Microsoft SQL Server, Error: 18456)".
Additional information returned to the client includes the following:
"Login failed for user ''. (.Net SqlClient Data Provider)"
"Error Number: 18456"
"Line Number: 65536"
The following message might also be returned:
"Msg 18456, Level 14, State 1, Server , Line 1"
"Login failed for user ''."
Additional Error Information
To increase security, the error message that is returned to the client deliberately hides the nature of the authentication error. However, in the SQL Server error log, a corresponding error contains an error state that maps to an authentication failure condition. Compare the error state to the following list to determine the reason for the login failure.
State | Description |
---|---|
1 | Error information is not available. This state usually means you do not have permission to receive the error details. Contact your SQL Server administrator for more information. |
2 | User ID is not valid. |
5 | User ID is not valid. |
6 | An attempt was made to use a Windows login name with SQL Server Authentication. |
7 | Login is disabled, and the password is incorrect. |
8 | The password is incorrect. |
9 | Password is not valid. |
11 | Login is valid, but server access failed. One possible cause of this error is when the Windows user has access to SQL Server as a member of the local administrators group, but Windows is not providing administrator credentials. To connect, start the connecting program using the Run as administrator option, and then add the Windows user to SQL Server as a specific login. |
12 | Login is valid login, but server access failed. |
18 | Password must be changed. |
38, 46 | Could not find database requested by user. |
58 | When SQL Server is set to use Windows Authentication only, and a client attempts to log in using SQL authentication. Another cause is when SIDs do not match. |
102 - 111 | AAD failure. |
122 - 124 | Failure due to empty user name or password. |
126 | Database requested by user does not exist. |
132 - 133 | AAD failure. |
Other error states exist and signify an unexpected internal processing error.
An additional unusual possible cause
The error reason An attempt to login using SQL authentication failed. Server is configured for Windows authentication only. can be returned in the following situations.
When the server is configured for mixed mode authentication, and an ODBC connection uses the TCP protocol, and the connection does not explicitly specify that the connection should use a trusted connection.
When the server is configured for mixed mode authentication, and an ODBC connection uses named pipes, and the credentials the client used to open the named pipe are used to automatically impersonate the user, and the connection does not explicitly specify that the connection should use a trusted connection.
To resolve this issue, include TRUSTED_CONNECTION = TRUE in the connection string.
Examples
In this example, the authentication error state is 8. This indicates that the password is incorrect.
Date | Source | Message |
---|---|---|
2007-12-05 20:12:56.34 | Logon | Error: 18456, Severity: 14, State: 8. |
2007-12-05 20:12:56.34 | Logon | Login failed for user ''. [CLIENT: ] |
When SQL Server is installed using Windows Authentication mode and is later changed to SQL Server and Windows Authentication mode, the sa login is initially disabled. This causes the state 7 error: "Login failed for user 'sa'." To enable the sa login, see Change Server Authentication Mode.
User Action
If you are trying to connect using SQL Server Authentication, verify that SQL Server is configured in Mixed Authentication Mode. For more information on changing SQL Server authentication mode review Change server authentication mode
If you are trying to connect using SQL Server Authentication, verify that SQL Server login exists and that you have spelled it properly.
If you are trying to connect using Windows Authentication, verify that you are properly logged into the correct domain.
If your error indicates state 1, contact your SQL Server administrator.
If you are trying to connect using your administrator credentials, start you application by using the Run as Administrator option. When connected, add your Windows user as an individual login.
If the Database Engine supports contained databases, confirm that the login was not deleted after migration to a contained database user.
When a connection attempt is rejected because of an authentication failure that involves a bad password or user name, a message similar to the following is returned to the client: "Login failed for user ''. (Microsoft SQL Server, Error: 18456)".
Additional information returned to the client includes the following:
"Login failed for user ''. (.Net SqlClient Data Provider)"
"Error Number: 18456"
"Line Number: 65536"
The following message might also be returned:
"Msg 18456, Level 14, State 1, Server , Line 1"
"Login failed for user ''."
Additional Error Information
To increase security, the error message that is returned to the client deliberately hides the nature of the authentication error. However, in the SQL Server error log, a corresponding error contains an error state that maps to an authentication failure condition. Compare the error state to the following list to determine the reason for the login failure.
State | Description |
---|---|
1 | Error information is not available. This state usually means you do not have permission to receive the error details. Contact your SQL Server administrator for more information. |
2 | User ID is not valid. |
5 | User ID is not valid. |
6 | An attempt was made to use a Windows login name with SQL Server Authentication. |
7 | Login is disabled, and the password is incorrect. |
8 | The password is incorrect. |
9 | Password is not valid. |
11 | Login is valid, but server access failed. One possible cause of this error is when the Windows user has access to SQL Server as a member of the local administrators group, but Windows is not providing administrator credentials. To connect, start the connecting program using the Run as administrator option, and then add the Windows user to SQL Server as a specific login. |
12 | Login is valid login, but server access failed. |
18 | Password must be changed. |
38, 46 | Could not find database requested by user. |
58 | When SQL Server is set to use Windows Authentication only, and a client attempts to log in using SQL authentication. Another cause is when SIDs do not match. |
102 - 111 | AAD failure. |
122 - 124 | Failure due to empty user name or password. |
126 | Database requested by user does not exist. |
132 - 133 | AAD failure. |
Other error states exist and signify an unexpected internal processing error.
An additional unusual possible cause
The error reason An attempt to login using SQL authentication failed. Server is configured for Windows authentication only. can be returned in the following situations.
When the server is configured for mixed mode authentication, and an ODBC connection uses the TCP protocol, and the connection does not explicitly specify that the connection should use a trusted connection.
When the server is configured for mixed mode authentication, and an ODBC connection uses named pipes, and the credentials the client used to open the named pipe are used to automatically impersonate the user, and the connection does not explicitly specify that the connection should use a trusted connection.
To resolve this issue, include TRUSTED_CONNECTION = TRUE in the connection string.
Examples
In this example, the authentication error state is 8. This indicates that the password is incorrect.
Date | Source | Message |
---|---|---|
2007-12-05 20:12:56.34 | Logon | Error: 18456, Severity: 14, State: 8. |
2007-12-05 20:12:56.34 | Logon | Login failed for user ''. [CLIENT: ] |
When SQL Server is installed using Windows Authentication mode and is later changed to SQL Server and Windows Authentication mode, the sa login is initially disabled. This causes the state 7 error: "Login failed for user 'sa'." To enable the sa login, see Change Server Authentication Mode.
User Action
If you are trying to connect using SQL Server Authentication, verify that SQL Server is configured in Mixed Authentication Mode. For more information on changing SQL Server authentication mode review Change server authentication mode
If you are trying to connect using SQL Server Authentication, verify that SQL Server login exists and that you have spelled it properly.
If you are trying to connect using Windows Authentication, verify that you are properly logged into the correct domain.
If your error indicates state 1, contact your SQL Server administrator.
If you are trying to connect using your administrator credentials, start you application by using the Run as Administrator option. When connected, add your Windows user as an individual login.
If the Database Engine supports contained databases, confirm that the login was not deleted after migration to a contained database user.
Дополнительные сведения, возвращаемые клиенту, включают в себя следующее:
"Ошибка входа пользователя . (.Net SqlClient Data Provider)"
"Номер ошибки: 18456"
"Номер строки: 65536"
Дополнительные сведения об ошибке
Состояние | Описание |
---|---|
1 | Сведения об ошибке недоступны. Это состояние обычно означает отсутствие разрешений на получение сведений об ошибке. За дополнительными сведениями обратитесь к администратору SQL Server. |
2 | Недопустимый идентификатор пользователя. |
5 | Недопустимый идентификатор пользователя. |
6 | Предпринята попытка использовать имя входа Windows при использовании проверки подлинности SQL Server. |
7 | Имя входа отключено, и пароль неверный. |
8 | Пароль неверный. |
9 | Недопустимый пароль. |
11 | Допустимое имя входа, но доступ к серверу не удался. Одна из возможных причин этой ошибки: пользователь Windows имеет доступ к SQL Server в качестве члена группы локальных администраторов, но Windows не предоставляет учетные данные администратора. Чтобы установить соединение, запустите программу подключения от имени администратора, а затем добавьте имя пользователя Windows в SQL Server в качестве определенного имени входа. |
12 | Допустимое имя входа, но доступ к серверу не удался. |
18 | Пароль должен быть изменен. |
38, 46 | Не удалось найти запрошенную пользователем базу данных. |
58 | Если SQL Server настроен на использование только проверки подлинности Windows, а клиент пытается выполнить вход с использованием проверки подлинности SQL. Другая причина — несовпадение идентификаторов безопасности. |
102–111 | Ошибка AAD. |
122–124 | Сбой из-за пустого имени пользователя или пароля. |
126 | Запрошенная пользователем база данных не существует. |
132–133 | Ошибка AAD. |
Есть другие коды ошибок, которые означают непредвиденные внутренние ошибки обработки.
Еще одна, менее распространенная, возможная причина
Когда на сервере настроена проверка подлинности в смешанном режиме, подключение ODBC использует протокол TCP, а подключение не указывает явно, что оно должно быть доверительным.
Когда на сервере настроена проверка подлинности в смешанном режиме, подключение ODBC использует именованные каналы, учетные данные, которые клиент использовал для открытия именованного канала, используются для автоматического олицетворения пользователя, а подключение не указывает явно, что оно должно быть доверительным.
Чтобы решить эту проблему, включите в строку подключения параметр TRUSTED_CONNECTION = TRUE.
Примеры
В этом примере состояние ошибки проверки подлинности равно 8. Это означает, что пароль неверный.
Если SQL Server устанавливается в режиме аутентификации Windows, а затем переключается на аутентификацию SQL Server и Windows, то имя входа sa будет по умолчанию отключено. Это приводит к ошибке с состоянием 7: "Ошибка входа для пользователя sa". Чтобы включить имя для входа sa, выполните инструкции из статьи об изменении режима проверки подлинности сервера.
Действие пользователя
При попытке подключения с использованием проверки подлинности SQL Server убедитесь, что SQL Server настроен в режиме смешанной проверки подлинности. Дополнительные сведения см. в статье Изменение режима проверки подлинности сервера.
При попытке подключения с использованием проверки подлинности SQL Server убедитесь, что имя входа SQL Server существует и введено верно.
При попытке подключения с использованием проверки подлинности Windows убедитесь, что выполнен правильный вход в нужный домен.
Если ошибка указывает состояние 1, обратитесь к администратору SQL Server.
Для подключения с учетными данными администратора запустите приложение от имени администратора. После подключения добавьте пользователя Windows в качестве отдельного имени входа.
Если компонент Компонент Database Engine поддерживает автономные базы данных, подтвердите, что имя входа не удалено после преобразования в пользователя автономной базы данных.
Вы можете столкнуться с ошибкой SQL Server 18456, если сервер не может аутентифицировать соединение, и это может быть вызвано недоступностью прав администратора для SQL-сервера или если протокол TCP / IP отключен в настройках SQL-сервера.
Проблема возникает, когда пользователь пытается подключиться к серверу SQL (локальному или удаленному), но обнаруживает ошибку 18456 (с разными состояниями).
Также проверьте, правильно ли вы вводите имя базы данных (без опечаток), и убедитесь, что вы соответствующим образом обновили файл конфигурации. Кроме того, проверьте, решает ли проблему разблокировка учетной записи (с помощью запроса ALTER LOGIN WITH PASSWORD = UNLOCK). Если вы видите ошибки в журнале ошибок SQL, убедитесь, что ваш SQL-сервер не атакован. И последнее, но не менее важное: убедитесь, что часы сервера и клиентского компьютера установлены правильно.
Запустите SQL Server от имени администратора и отключите UAC на сервере.
Вы можете столкнуться с ошибкой 18456, если SQL-сервер не имеет повышенных разрешений на выполнение своей операции, и запуск его от имени администратора (или отключение элементов управления UAC на сервере) может решить проблему.
Откройте SQL Server от имени администратора
- Щелкните Windows и введите SQL Server Management Studio.
- Теперь щелкните правой кнопкой мыши SMSS и выберите «Запуск от имени администратора».Запустите Microsoft SQL Server Management Studio от имени администратора.
- Затем нажмите Да (если получено приглашение UAC) и проверьте, не содержит ли SQL-сервер ошибки 18456.
- Если нет, проверьте, решает ли проблему отключение UAC на сервере.
Запуск SQL Server в однопользовательском режиме
- Щелкните Windows, введите и откройте диспетчер конфигурации SQL Server.
- Теперь щелкните правой кнопкой мыши службу SQL Server (на вкладке «Службы SQL Server») и выберите «Свойства».Откройте свойства SQL Server
- Затем перейдите на вкладку Параметры запуска и в поле Укажите параметр запуска введите: -m
- Теперь нажмите «Добавить» и примените изменения.Добавьте параметр «-m» к параметрам запуска SQL Server.
- Затем щелкните правой кнопкой мыши службу SQL Server и выберите «Перезагрузить».Перезапустите службу SQL Server.
- Теперь щелкните Windows, введите: SQL Server Management Studio, щелкните правой кнопкой мыши SMSS и выберите Запуск от имени администратора.
- Теперь проверьте, можете ли вы подключиться к SQL Server от имени администратора.
- Если это так, добавьте учетную запись домена на SQL-сервер и назначьте ей роль SysAdmin.
- Теперь вернитесь в окно диспетчера конфигурации SQL Server и удалите параметр -m на вкладке Параметры запуска.
- Затем перезапустите службу SQL Server (шаг 3) и проверьте, нормально ли работает SQL-сервер.
Если проблема не исчезнет, проверьте, правильно ли настроены параметры запуска или сведения о пути. Если проблема все еще существует, убедитесь, что ваша учетная запись пользователя имеет необходимые разрешения для служб базы данных / отчетов, а затем проверьте, решена ли проблема.
Включите протокол TCP / IP в диспетчере конфигурации сервера.
Код ошибки 18456 на сервере SQL означает, что серверу не удалось аутентифицировать соединение, и это может произойти, если протокол TCP / IP, необходимый для доступа к базе данных в сети, отключен в диспетчере конфигурации сервера. В этом контексте включение TCP / IP в диспетчере конфигурации SQL Server может решить проблему.
- Щелкните Windows и разверните Microsoft SQL Server, указав год, например, 2008 (вам может потребоваться немного прокрутить, чтобы найти параметр).
- Теперь откройте диспетчер конфигурации SQL Server и нажмите Да (если получено приглашение UAC).
- Затем разверните сетевую конфигурацию SQL Server и выберите Протоколы для (имя сервера / базы данных) на левой панели.
- Теперь на правой панели дважды щелкните TCP / IP и выберите Да в раскрывающемся списке Включено.Откройте TCP / IP в протоколах конфигурации сети SQL Server
- Затем примените изменения и щелкните Windows.Включить TCP / IP в SQL
- Теперь введите «Службы», щелкните правой кнопкой мыши результат «Службы» и выберите «Запуск от имени администратора».Откройте службы в качестве администратора
- Затем щелкните правой кнопкой мыши SQL Server (с именем сервера) и выберите «Перезагрузить».Перезапустите службу SQL в окне служб.
- Теперь проверьте, очищен ли SQL-сервер от ошибки 18456.
Если это не помогло, убедитесь, что вы подключаетесь к правильному порту SQL-сервера (особенно, если вы используете сервер в многосерверной среде).
Измените режим аутентификации SQL Server
Сервер SQL может отображать ошибку 18456, если метод аутентификации сервера SQL не настроен должным образом (например: вы пытаетесь войти в систему с использованием аутентификации сервера SQL, тогда как сервер настроен на использование аутентификации Windows). В этом случае изменение метода аутентификации SQL-сервера может решить проблему. Прежде чем двигаться дальше, убедитесь, что для текущего пользователя включен статус входа в систему (например, SA).
- В обозревателе объектов Microsoft SQL Server Management Studio щелкните правой кнопкой мыши свой сервер и выберите «Свойства».
- Теперь на левой панели выберите Безопасность, а на правой панели выберите SQL Server и проверку подлинности Windows (или наоборот).Включить SQL Server и проверку подлинности Windows
- Затем примените изменения и в обозревателе объектов щелкните правой кнопкой мыши сервер.
- Теперь выберите «Перезагрузить» и после перезапуска проверьте, можете ли вы подключиться к базе данных без ошибки 18456.
Если вы не можете войти в SQL, вы можете установить MS Power Tools и выполнить следующую команду с повышенными привилегиями:
psexec.exe -i -s ssms.exe
После этого вы можете использовать учетную запись установки SQL, чтобы внести изменения, а также убедиться, что учетная запись SA не отключена:
Включите учетную запись SA и сбросьте пароль учетной записи
Если вы не можете подключиться к SQL Server, то включение учетной записи SA SQL-сервера и сброс его пароля может решить проблему.
Создайте новый логин и перезапустите службы Reporting Services
Если вы не можете использовать какую-либо учетную запись для подключения к базе данных, то создание новой учетной записи и перезапуск служб отчетов может решить проблему.
- Запустите Microsoft SQL Server Management Studio и разверните вкладку «Безопасность».
- Затем разверните Логины и щелкните его правой кнопкой мыши.
- Теперь выберите «Новый вход» и введите учетные данные (в имени входа выберите учетную запись компьютера), если используется проверка подлинности SQL Server.Создать новый логин в SQL Server
- Затем не забудьте снять флажок «Пользователь должен сменить пароль при следующем входе в систему» и выберите базу данных.
- Теперь перейдите на вкладку Server Roles и выберите роль Public.
- Затем на вкладке «Сопоставление пользователей» обязательно выберите базу данных и выберите db_owner.Выберите db_owner для базы данных в SQL
- Теперь примените ваши изменения и щелкните Windows.
- Затем введите Services и щелкните правой кнопкой мыши результат Services. Затем выберите Запуск от имени администратора.
- Теперь щелкните правой кнопкой мыши службу отчетов SQL Server и выберите «Перезагрузить».Перезапустите службу отчетов SQL Server.
- Затем повторно подключитесь к базе данных и проверьте, очищен ли сервер SQL от ошибки 18456.
Если это так, убедитесь, что вы создали пользователя в BUILTIN administrators, и затем вы можете использовать этого пользователя для управления SQL Server. Если вы восстановили базу данных из резервной копии, будет лучше удалить и повторно добавить пользователей, чтобы удалить все старые записи пользователей. Если вы хотите запустить SQL-сервер от имени другого пользователя, введите Microsoft SQL Server в поиске Windows, Shift + щелкните правой кнопкой мыши на SQL Server и выберите «Запуск от имени другого пользователя». И последнее, но не менее важное: проверьте, решает ли проблема использование Azure Data Studio с сервером SQL.
Test both the sql and windows authentication access through SqlServer Management Console for the user and see if you can access with the above account. What data provider and connection string are you using?
Login as admin and check your eventlog. The reason for the error should be listed there. Look under the management folder
8 Answers 8
You need to enable SQL Server Authentication:
- In the Object Explorer, right click on the server and click on "Properties"
- In the "Server Properties" window click on "Security" in the list of pages on the left. Under "Server Authentication" choose the "SQL Server and Windows Authentication mode" radio option.
Why should this work if OP explicitly states that "Authentication Mode on SQL Server is set to both (Windows and SQL)"?
This answer is redundant and not useful for the question. The OP already established that "Authentication Mode on SQL Server is set to both (Windows and SQL)".
By default login failed error message is nothing but a client user connection has been refused by the server due to mismatch of login credentials. First task you might check is to see whether that user has relevant privileges on that SQL Server instance and relevant database too, thats good. Obviously if the necessary prvileges are not been set then you need to fix that issue by granting relevant privileges for that user login.
Althought if that user has relevant grants on database & server if the Server encounters any credential issues for that login then it will prevent in granting the authentication back to SQL Server, the client will get the following error message:
Ok now what, by looking at the error message you feel like this is non-descriptive to understand the Level & state. By default the Operating System error will show 'State' as 1 regardless of nature of the issues in authenticating the login. So to investigate further you need to look at relevant SQL Server instance error log too for more information on Severity & state of this error. You might look into a corresponding entry in log as:
As defined above the Severity & State columns on the error are key to find the accurate reflection for the source of the problem. On the above error number 8 for state indicates authentication failure due to password mismatch. Books online refers: By default, user-defined messages of severity lower than 19 are not sent to the Microsoft Windows application log when they occur. User-defined messages of severity lower than 19 therefore do not trigger SQL Server Agent alerts.
Sung Lee, Program Manager in SQL Server Protocols (Dev.team) has outlined further information on Error state description:The common error states and their descriptions are provided in the following table:
You can see there is no severity or state level defined from that SQL Server instance's error log. So the next troubleshooting option is to look at the Event Viewer's security log [edit because screen shot is missing but you get the
Читайте также: