Не вдалося ввійти для користувача - Помилка 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, а не ім’я користувача та пароль. Не дуже впевнений, що або як це сталося, але це сталося. Я видалив їх, а потім відновив свої моделі сутності. Я використовував ще один рядок з'єднання, який я знав, що це добре, і все це радість. Ключовим є Persist Security Info = True, який не працюватиме в мережі або на зовнішньому веб-сайті


2

У мене було 18456 із державою 38. Виявилося, що в рядку з'єднання було "інтегрована безпека = правда", чого я не хотів. Рядок з'єднання містив userid та пароль, які мали використовувати. Коли я змінив налаштування на помилкове, все було добре.


2

Я отримав цю помилку, намагаючись увійти на SQL Server з декількома екземплярами. Рядок з'єднання не назвав примірник. Після того, як я назвав примірник (SERVERNAME \ INSTANCENAME), мені вдалося підключитися до сервера.


2

@Pete Oakly знаходиться на правильній стежці зі списком коду держави. Зокрема, це код, який нас усіх цікавить:

38 'Реєстрація дійсна, але база даних недоступна (або вхід не дозволений)'

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

Виняток | ОпублікованоException | 000161 | 29.10.2018 | 11: 06: 40.210 | 16284 | InnerException | Неможливо відкрити базу даних "InterestingDataBaseName", яку вимагає вхід. Помилка входу. Помилка входу для користувача "CORP \ anyuser".

Мої очі були зосереджені на частині "Вхід не вдався" . Мій користувач працював на цьому сервері БД, як міг вхід не вдатися?

Я наткнувся на цю посаду трійкою програмістів, на яку була відповідь: 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 Studio 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 має бути встановлено правильно.


1

Ну, це помилка, пов’язана з дозволом бази даних. Я додаю своє рішення в цьому питанні, оскільки дуже важливо зрозуміти роль DBA. Отже, є мої пропозиції:

  • Перейдіть до Менеджера серверів
  • Виберіть Інструменти, а потім Керування комп'ютером
  • Перевірте місцевих користувачів та груп
  • Перевірте ім'я адміністратора з описом "Вбудований акаунт для адміністрування комп'ютера / домену"

Тепер увійдіть за допомогою цього імені користувача, і ви можете надати доступ користувачеві. Робити так:

Перейдіть до Безпеки , клацніть правою кнопкою миші Логін та виберіть Новий логін

У вікні входу ви можете ввести ім'я користувача або шукати його. Виберіть користувача зі списку та знову натисніть кнопку ОК та ОК .

У цьому ж вікні входу натисніть Ролі сервера та надайте доступ обраному користувачеві, наприклад: sysadmin, serveradmin, decreator тощо; натисніть кнопку ОК .

Якщо ви хочете надати доступ до окремої бази даних, тоді перейдіть до " Картування користувачів" та надайте доступ відповідно до ваших вимог.

Перевірте стан бази даних: Дозвіл: Вхід на грант : Увімкнено

Натисніть кнопку ОК


2
Це може бути дуже хороший відповідь , якщо ви могли б поставити акцент на можливості відсутнього SQL Server Вхід для користувача бази даних відносин або можливості того, що SQL Server Логін «s бази даних по замовчуванням більше не доступний. На даний момент ваша відповідь - лише узагальнена рекомендація щодо створення облікового запису. Я не впевнений, як перша частина вашої відповіді допоможе вирішити питання ОП. Чи можете ви пояснити цю частину?
Джон ака hot2use
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.