Ошибка входа пользователя - Ошибка 18456 - Уровень серьезности 14, Состояние 38

23

Сообщение, которое показывает средство просмотра файлов журнала SQL Server:

Login failed for user [User]
Error: 18456, Severity: 14, State 38

Что это на самом деле означает:

Failed to open the explicitly specified database

Мой вопрос:

Есть ли где-нибудь список всех вариантов ошибок 18456 (Ошибка входа в систему), для каждой комбинации серьезности и состояния, с полезным текстом описания?

У меня есть Google, но я не могу найти ничего, кроме определенных комбинаций.

Пит Оки
источник

Ответы:

25

Государственные коды и их значение.

1      'Account is locked out'
2      'User id is not valid'
3-4    'Undocumented'
5      'User id is not valid'
6      'Undocumented'
7      'The login being used is disabled'
8      'Incorrect password'
9      'Invalid password'
10     'Related to a SQL login being bound to Windows domain password policy enforcement.
        See KB925744.'
11-12  'Login valid but server access failed'
16     'Login valid, but not permissioned to use the target database'
18     'Password expired'
27     'Initial database could not be found'
38     'Login valid but database unavailable (or login not permissioned)'

Более подробная информация доступна в блоге Аарона Бертранда .

Пит Оки
источник
@PeteOakly, вы находитесь на правильном пути для государства 38. Посмотрите пост ниже о пропавшей базе данных как одной из причин для государства 38.
Джон Дайер
4

У меня была такая же ошибка с кодом состояния 38, вызванная опечаткой имени базы данных в строке подключения.

Роб Боуман
источник
2

Вот что я обнаружил, когда исправил эту ошибку: я создал несколько SQL-соединений, используя windows login, а не имя пользователя и пароль. Не совсем уверен, что или как это произошло, но это произошло. Я удалил их, а затем перестроил свои модели сущностей. Я использовал другую строку подключения, которая, как я знал, была хорошей, и все было радостью. Ключ - Persist Security Info = True, который не будет работать в сети или на внешнем веб-сайте.

Билл У.
источник
2

У меня был 18456 с состоянием 38, а также. Оказалось, что строка подключения имеет «встроенную безопасность = истина», а это не то, что я хотел. Строка соединения содержала идентификатор пользователя и пароль, которые должны были использоваться. Когда я изменил настройку на false, все было хорошо.

Дик Ванденберг
источник
2

Я получил эту ошибку при попытке войти в SQL Server с несколькими экземплярами. Строка подключения не назвала экземпляр. После того как я назвал экземпляр (SERVERNAME \ INSTANCENAME), мне удалось подключиться к серверу.

Nasser
источник
2

@ Пит Оукли находится на правильном пути со списком кодов штатов. В частности, это код, который нас всех интересует:

38 'Вход действителен, но база данных недоступна (или вход не разрешен)'

Моя проблема началась в журнале ошибок C #:

Exception | ОпубликоватьException | 000161 | 29.10.2008 | 11: 06: 40.210 | 16284 | InnerException | Невозможно открыть базу данных «InterestingDataBaseName», запрошенную при входе в систему. Ошибка входа. Не удалось войти в систему для пользователя 'CORP \ anyuser'.

Мои глаза были сосредоточены на части «Ошибка входа» . Мой пользователь был sa для этого сервера БД, как может произойти сбой входа в систему?

Я наткнулся на этот пост трио программистов, у которых был ответ: https://justaprogrammer.net/2012/12/09/a-misleading-sql-error-message-error-18456-severity-14-state-38 /

Это не ошибка входа в систему как таковая, это база данных, к которой я пытаюсь получить доступ. Этого не существует!

Бинго! Я изменил имя базы данных по другим причинам и не обновил файл конфигурации. Исправлено имя БД и все снова работает как шарм.

Джон Дайер
источник
1

В нашем случае в диспетчере конфигурации SQL Server | Конфигурация сети SQL Server | TCP / IP | IP | TCP - порт был НЕ установлен.

Без этого мы не могли бы установить соединение ODBC и даже использовать удаленное соединение SQL Management Studio и войти в систему с пользователем. Однако каждый раз, когда мы обращались к URL-адресу нашего приложения Tomcat, он запускал соединение jdbc, а затем в журнале SQL Server обнаруживал ошибку: сбой входа для пользователя 'xxxx': причина Не удалось открыть явно определенную базу данных, ошибка 18456, уровень серьезности 14 Штат 38

Здесь аннотация строки соединения JDBC

"jdbc:sqlserver://10.10.10.10:1433;databaseName=zzzzzzz" username="yyyyyy" password="xxxxxx" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" defaultAutoCommit="true"/>
<Resource name="jdbc/application" 

Это, чтобы сказать, что также в конфигурации сети SQL Server | Протоколы для <имя экземпляра> | Именованные каналы должны быть включены, а имя трубы \\.\pipe\MSSQL$<instance name>\sql\query должно быть установлено правильно.

Sti
источник
1

Ну, это ошибка, связанная с разрешением базы данных. Я добавляю свое решение в этом вопросе, потому что очень важно понимать роль администратора баз данных. Итак, есть мои предложения:

  • Перейти к диспетчеру сервера
  • Выберите Инструменты, а затем Управление компьютером
  • Проверьте локальных пользователей и группы
  • Проверьте имя администратора с описанием «Встроенная учетная запись для администрирования компьютера / домена»

Теперь войдите под этим именем пользователя, и вы сможете предоставить доступ пользователю. Для этого:

Зайдите в Security , щелкните правой кнопкой мыши на Logins и выберите New Login

В окне входа в систему вы можете ввести имя пользователя или выполнить поиск. Выберите пользователя из списка и нажмите OK и снова OK .

В том же окне входа в систему нажмите на роли сервера и предоставьте доступ выбранному пользователю, например: sysadmin, serveradmin, decreator и т. Д .; нажмите OK .

Если вы хотите предоставить доступ к отдельной базе данных, перейдите в раздел «Отображение пользователей» и предоставьте доступ в соответствии с вашими требованиями.

Проверьте статус базы данных: Разрешение: Предоставить логин: Включено

Нажмите ОК

Приянка
источник
2
Это может быть очень хороший ответ , если вы могли бы поставить акцент на возможности отсутствующего SQL Server Вход для пользователя базы данных отношений или возможности того, что SQL Server Логин «s базы данных по умолчанию больше не доступен. В настоящее время ваш ответ является лишь обобщенной рекомендацией о том, как создать учетную запись. Я не уверен, как первая часть вашего ответа поможет решить проблему ОП. Не могли бы вы объяснить эту часть?
Джон aka hot2use