Ошибка 18456 серьезность 14 состояние 38

Приветствую.

Приветствую.

Имеется MS Windows 2008r2 + SQL Server 2008 Standart. Буквально каждую минуту выскакивает в логах:

Ошибка: 18456, серьезность: 14, состояние: 38.

Login failed for user ‘NT AUTHORITYсистема’. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]

Посоветуйте что можно предпринять.

26.02.2013 22:53	Server	Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)    Jul  9 2008 14:17:44    Copyright (c) 1988-2008 Microsoft Corporation   Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)  
26.02.2013 22:53	Server	(c) 2005 Microsoft Corporation.
26.02.2013 22:53	Server	All rights reserved.
26.02.2013 22:53	Server	Server process ID is 3036.
26.02.2013 22:53	Server	System Manufacturer: 'Supermicro', System Model: 'X8DTL'.
26.02.2013 22:53	Server	Authentication mode is MIXED.
26.02.2013 22:53	Server	Logging SQL Server messages in file 'C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLLogERRORLOG'.
26.02.2013 22:53	Server	This instance of SQL Server last reported using a process ID of 2084 at 26.02.2013 22:48:57 (local) 26.02.2013 18:48:57 (UTC). This is an informational message only; no user action is required.
26.02.2013 22:53	Server	Registry startup parameters:     -d C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAmaster.mdf    -e C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLLogERRORLOG    -l C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAmastlog.ldf
26.02.2013 22:53	Сервер	SQL Server is starting at high priority base (=13). This is an informational message only. No user action is required.
2013-02-26 22:53:50.030	Сервер	Detected 8 CPUs. This is an informational message; no user action is required.
26.02.2013 22:53	Сервер	Using dynamic lock allocation.  Initial allocation of 2500 Lock blocks and 5000 Lock Owner blocks per node.  This is an informational message only.  No user action is required.
26.02.2013 22:53	Сервер	Node configuration: node 0: CPU mask: 0x00000000000000f0 Active CPU mask: 0x00000000000000f0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
26.02.2013 22:53	Сервер	Node configuration: node 1: CPU mask: 0x000000000000000f Active CPU mask: 0x000000000000000f. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
26.02.2013 22:53	spid9s	Starting up database 'master'.
2013-02-26 22:54:00.060	spid9s	FILESTREAM: effective level = 0, configured level = 0, file system access share name = 'MSSQLSERVER'.
26.02.2013 22:54	spid9s	SQL Trace ID 1 was started by login "sa".
26.02.2013 22:54	spid9s	Starting up database 'mssqlsystemresource'.
26.02.2013 22:54	spid9s	The resource database build version is 10.00.1600. This is an informational message only. No user action is required.
26.02.2013 22:54	spid9s	Server name is 'DB-SERVER'. This is an informational message only. No user action is required.
26.02.2013 22:54	spid13s	Starting up database 'model'.
26.02.2013 22:54	spid13s	Clearing tempdb database.
26.02.2013 22:54	Сервер	The certificate [Cert Hash(sha1) "CF7471551E1B99869882FFB6E7278B98631B5F6D"] was successfully loaded for encryption.
2013-02-26 22:54:01.030	Сервер	Server is listening on [ 'any' <ipv6> 1433].
2013-02-26 22:54:01.030	Сервер	Server is listening on [ 'any' <ipv4> 1433].
2013-02-26 22:54:01.040	Сервер	Server local connection provider is ready to accept connection on [ \.pipeSQLLocalMSSQLSERVER ].
2013-02-26 22:54:01.040	Сервер	Server local connection provider is ready to accept connection on [ \.pipesqlquery ].
2013-02-26 22:54:01.040	Сервер	Server is listening on [ ::1 <ipv6> 1434].
2013-02-26 22:54:01.040	Сервер	Server is listening on [ 127.0.0.1 <ipv4> 1434].
2013-02-26 22:54:01.040	Сервер	Dedicated admin connection support was established for listening locally on port 1434.
26.02.2013 22:54	Сервер	The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/db-server.krasnobor-tula.local ] for the SQL Server service. 
26.02.2013 22:54	Сервер	The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/db-server.krasnobor-tula.local:1433 ] for the SQL Server service. 
26.02.2013 22:54	Сервер	SQL Server is now ready for client connections. This is an informational message; no user action is required.
26.02.2013 22:54	spid13s	Starting up database 'tempdb'.
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'sqladmin'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: fe80::2d9d:3a04:8101:bb5a%13]
26.02.2013 22:54	spid16s	The Service Broker protocol transport is disabled or not configured.
26.02.2013 22:54	spid16s	The Database Mirroring protocol transport is disabled or not configured.
26.02.2013 22:54	spid16s	Service Broker manager has started.
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'sqladmin'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: 192.168.15.5]
26.02.2013 22:54	spid12s	A new instance of the full-text filter daemon host process has been successfully started.
26.02.2013 22:54	spid20s	Starting up database 'utka'.
26.02.2013 22:54	spid22s	Starting up database 'uat'.
26.02.2013 22:54	spid24s	Starting up database 'do'.
26.02.2013 22:54	spid23s	Starting up database 'zup'.
26.02.2013 22:54	spid12s	Starting up database 'msdb'.
26.02.2013 22:54	spid25s	Starting up database 'ptic1'.
26.02.2013 22:54	spid19s	Starting up database 'zakazy'.
26.02.2013 22:54	spid27s	Starting up database 'do_copy'.
26.02.2013 22:54	spid21s	Starting up database 'ptichka'.
26.02.2013 22:54	spid26s	Starting up database 'krn'.
26.02.2013 22:54	spid28s	Starting up database 'zik'.
26.02.2013 22:54	spid29s	Starting up database 'zikn'.
26.02.2013 22:54	spid19s	Recovery is writing a checkpoint in database 'zakazy' (6). This is an informational message only. No user action is required.
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'sqladmin'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: 192.168.15.5]
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
2013-02-26 22:54:38.090	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
2013-02-26 22:54:38.090	Вход	Login failed for user 'sqladmin'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: 192.168.15.5]
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'sqladmin'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: 192.168.15.5]
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'sqladmin'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: 192.168.15.5]
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'sqladmin'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: 192.168.15.5]
26.02.2013 22:54	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:54	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
26.02.2013 22:55	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:55	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
26.02.2013 22:55	spid9s	Recovery is complete. This is an informational message only. No user action is required.
26.02.2013 22:55	spid57	Attempting to load library 'xpsqlbot.dll' into memory. This is an informational message only. No user action is required.
26.02.2013 22:55	spid57	Using 'xpsqlbot.dll' version '2007.100.1600' to execute extended stored procedure 'xp_qv'. This is an informational message only; no user action is required.
2013-02-26 22:55:59.020	spid57	Attempting to load library 'xpstar.dll' into memory. This is an informational message only. No user action is required.
2013-02-26 22:55:59.060	spid57	Using 'xpstar.dll' version '2007.100.1600' to execute extended stored procedure 'xp_instance_regread'. This is an informational message only; no user action is required.
26.02.2013 22:55	spid57	Attempting to load library 'xplog70.dll' into memory. This is an informational message only. No user action is required.
26.02.2013 22:55	spid57	Using 'xplog70.dll' version '2007.100.1600' to execute extended stored procedure 'xp_msver'. This is an informational message only; no user action is required.
26.02.2013 22:56	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:56	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
26.02.2013 22:57	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:57	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
26.02.2013 22:58	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:58	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]
26.02.2013 22:59	Вход	Ошибка: 18456, серьезность: 14, состояние: 38.
26.02.2013 22:59	Вход	Login failed for user 'NT AUTHORITYсистема'. Причина: не удалось открыть явно указанную базу данных. [КЛИЕНТ: <local machine>]

Message that SQL Server Log File Viewer shows:

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

What it actually means:

Failed to open the explicitly specified database

My Question:

Is there a list somewhere of all the variations of the 18456 errors (Login failed), for each combination of severity and state, with the helpful description text?

I’ve had a Google but can’t find anything other than specific combinations.

asked Nov 30, 2012 at 16:30

Pete Oakey's user avatar

State codes and their meaning.

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)'

More detailed information is available in Aaron Bertrand’s blog.

To find the status code, you need to inspect the SQL Server Error Log after ensuring that failed logins are recorded in the error log.

Hannah Vernon's user avatar

Hannah Vernon

68.4k22 gold badges164 silver badges303 bronze badges

answered Nov 30, 2012 at 16:33

Pete Oakey's user avatar

Pete OakeyPete Oakey

6491 gold badge6 silver badges12 bronze badges

1

I had the same error with state code 38 caused by a typo of the name of the database in the connection string.

answered Jan 9, 2017 at 10:57

Rob Bowman's user avatar

Rob BowmanRob Bowman

2713 silver badges7 bronze badges

Here is what I found when I resolved this error: I had created some SQL connections using windows login and not user name and password. Not really sure what or how it happened but it did. I deleted them and then rebuilt my entity models. I used another connection string that I knew to be good, and all is joy. Key is Persist Security Info=True, which will not work on a network or external web site

answered Jul 6, 2016 at 18:12

Bill W.'s user avatar

I had 18456 with state 38 as well. Turned out that the connection string had ‘integrated security=true’ which was not what I wanted. The connection string contained the userid and password that were to be used. When I changed the setting to false, all was well.

answered Jun 10, 2017 at 20:33

Dick Vandenberg's user avatar

I got this error trying to log on to an SQL Server with multiple instances. The connection string didn’t name an instance. Once I named the instance (SERVERNAMEINSTANCENAME), I managed to connect to the server.

answered Oct 10, 2017 at 8:18

Nasser's user avatar

NasserNasser

1212 bronze badges

@Pete Oakly is on the right trail with the list of state code. Specifically, this is the code we’re all interested in:

38 ‘Login valid but database unavailable (or login not
permissioned)’

My problem started in a C# error log:

Exception|PublishedException|000161|10/29/2018|11:06:40.210|16284|InnerException|Cannot
open database «InterestingDataBaseName» requested by the login. The
login failed. Login failed for user ‘CORPanyuser’.

My eyes were focused on the «Login failed» part. My user was sa for this DB server, how could the login possibly fail?

I stumbled into this post by a trio of programmers that had the answer:
https://justaprogrammer.net/2012/12/09/a-misleading-sql-error-message-error-18456-severity-14-state-38/

It’s not the login failing per se, it’s the database that I’m trying to access. It does NOT EXIST!

Bingo! I had changed the database name for other reasons and didn’t update the configuration file. Fixed the DB name and things are working like a charm once again.

Marcello Miorelli's user avatar

answered Oct 29, 2018 at 18:00

John Dyer's user avatar

In our case in the SQL Server Configuration Manager | SQL Server Network Configuration | TCP/IP | IP | The TCP Port was NOT set.

Without we could establish an ODBC connection and even use a remote SQL Management Studio connection and login with the user. However each time we accessed the url of our Tomcat application it launched an jdbc connection , then we spotted in the SQL Server Log the error : Login failed for user ‘xxxx’ : reason Failed to open the explicit defined database, error 18456 , Severity 14, State 38

Here an abstract of the jdbc connection string

"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" 

This to say that also in the SQL Server Network Configuration | Protocols for < instance name> | Named Pipes has to be ENABLED & the Pipe Name \.pipeMSSQL$<instance name>sqlquery
has to be set correctly.

Md Haidar Ali Khan's user avatar

answered May 16, 2018 at 8:43

Sti's user avatar

Well, this is database permission related error. I am adding my solution in this question because, it is very important to understand the role of DBA. So, there are my suggestions:

  • Go to Server Manager
  • Select Tools and then Computer Management
  • Check the Local Users and Groups
  • Check the admin name with description ‘Built-in account for administering the computer/domain’

Now, login with that username and you can grant access to the user. To do so:

Go to Security, right click on Logins and select New Login

In login window, you can type the user name or search it. Select the user from the list and click OK and OK again.

On the same login window, click on the Server Roles, and grant the access to the selected user like: sysadmin, serveradmin, decreator etc; click OK.

If you want to grant access to an individual database then, go to User Mapping and provide the access as per your requirement.

Check the Status of the database:
Permission: Grant
Login: Enabled

Click OK

answered Dec 7, 2018 at 5:57

1

Another possible cause for this error: a login has just been added to an Active Directory group that has the correct permissions, but the AD token for the login hasn’t been updated yet. Refreshing the token will fix the issue; one way to accomplish this is ask the user to log out of his or her workstation.

answered Apr 28, 2022 at 9:30

Robert van den Berg's user avatar

Message that SQL Server Log File Viewer shows:

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

What it actually means:

Failed to open the explicitly specified database

My Question:

Is there a list somewhere of all the variations of the 18456 errors (Login failed), for each combination of severity and state, with the helpful description text?

I’ve had a Google but can’t find anything other than specific combinations.

asked Nov 30, 2012 at 16:30

Pete Oakey's user avatar

State codes and their meaning.

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)'

More detailed information is available in Aaron Bertrand’s blog.

To find the status code, you need to inspect the SQL Server Error Log after ensuring that failed logins are recorded in the error log.

Hannah Vernon's user avatar

Hannah Vernon

68.4k22 gold badges164 silver badges303 bronze badges

answered Nov 30, 2012 at 16:33

Pete Oakey's user avatar

Pete OakeyPete Oakey

6491 gold badge6 silver badges12 bronze badges

1

I had the same error with state code 38 caused by a typo of the name of the database in the connection string.

answered Jan 9, 2017 at 10:57

Rob Bowman's user avatar

Rob BowmanRob Bowman

2713 silver badges7 bronze badges

Here is what I found when I resolved this error: I had created some SQL connections using windows login and not user name and password. Not really sure what or how it happened but it did. I deleted them and then rebuilt my entity models. I used another connection string that I knew to be good, and all is joy. Key is Persist Security Info=True, which will not work on a network or external web site

answered Jul 6, 2016 at 18:12

Bill W.'s user avatar

I had 18456 with state 38 as well. Turned out that the connection string had ‘integrated security=true’ which was not what I wanted. The connection string contained the userid and password that were to be used. When I changed the setting to false, all was well.

answered Jun 10, 2017 at 20:33

Dick Vandenberg's user avatar

I got this error trying to log on to an SQL Server with multiple instances. The connection string didn’t name an instance. Once I named the instance (SERVERNAMEINSTANCENAME), I managed to connect to the server.

answered Oct 10, 2017 at 8:18

Nasser's user avatar

NasserNasser

1212 bronze badges

@Pete Oakly is on the right trail with the list of state code. Specifically, this is the code we’re all interested in:

38 ‘Login valid but database unavailable (or login not
permissioned)’

My problem started in a C# error log:

Exception|PublishedException|000161|10/29/2018|11:06:40.210|16284|InnerException|Cannot
open database «InterestingDataBaseName» requested by the login. The
login failed. Login failed for user ‘CORPanyuser’.

My eyes were focused on the «Login failed» part. My user was sa for this DB server, how could the login possibly fail?

I stumbled into this post by a trio of programmers that had the answer:
https://justaprogrammer.net/2012/12/09/a-misleading-sql-error-message-error-18456-severity-14-state-38/

It’s not the login failing per se, it’s the database that I’m trying to access. It does NOT EXIST!

Bingo! I had changed the database name for other reasons and didn’t update the configuration file. Fixed the DB name and things are working like a charm once again.

Marcello Miorelli's user avatar

answered Oct 29, 2018 at 18:00

John Dyer's user avatar

In our case in the SQL Server Configuration Manager | SQL Server Network Configuration | TCP/IP | IP | The TCP Port was NOT set.

Without we could establish an ODBC connection and even use a remote SQL Management Studio connection and login with the user. However each time we accessed the url of our Tomcat application it launched an jdbc connection , then we spotted in the SQL Server Log the error : Login failed for user ‘xxxx’ : reason Failed to open the explicit defined database, error 18456 , Severity 14, State 38

Here an abstract of the jdbc connection string

"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" 

This to say that also in the SQL Server Network Configuration | Protocols for < instance name> | Named Pipes has to be ENABLED & the Pipe Name \.pipeMSSQL$<instance name>sqlquery
has to be set correctly.

Md Haidar Ali Khan's user avatar

answered May 16, 2018 at 8:43

Sti's user avatar

Well, this is database permission related error. I am adding my solution in this question because, it is very important to understand the role of DBA. So, there are my suggestions:

  • Go to Server Manager
  • Select Tools and then Computer Management
  • Check the Local Users and Groups
  • Check the admin name with description ‘Built-in account for administering the computer/domain’

Now, login with that username and you can grant access to the user. To do so:

Go to Security, right click on Logins and select New Login

In login window, you can type the user name or search it. Select the user from the list and click OK and OK again.

On the same login window, click on the Server Roles, and grant the access to the selected user like: sysadmin, serveradmin, decreator etc; click OK.

If you want to grant access to an individual database then, go to User Mapping and provide the access as per your requirement.

Check the Status of the database:
Permission: Grant
Login: Enabled

Click OK

answered Dec 7, 2018 at 5:57

1

Another possible cause for this error: a login has just been added to an Active Directory group that has the correct permissions, but the AD token for the login hasn’t been updated yet. Refreshing the token will fix the issue; one way to accomplish this is ask the user to log out of his or her workstation.

answered Apr 28, 2022 at 9:30

Robert van den Berg's user avatar

Вы можете столкнуться с ошибкой SQL Server 18456, если сервер не может аутентифицировать соединение, и это может быть вызвано недоступностью прав администратора для SQL-сервера или если протокол TCP / IP отключен в настройках SQL-сервера.

Проблема возникает, когда пользователь пытается подключиться к серверу SQL (локальному или удаленному), но обнаруживает ошибку 18456 (с разными состояниями).

Ошибка Microsoft SQL Server 18456

Вы можете исправить ошибку SQL-сервера 18456, попробовав приведенные ниже решения, но перед этим проверьте, решает ли проблему перезагрузка сервера, клиентского компьютера и сетевых компьютеров. Кроме того, убедитесь, что вы вводите правильное имя пользователя и пароль (а не копируете адрес).

Также проверьте, правильно ли вы вводите имя базы данных (без опечаток), и убедитесь, что вы соответствующим образом обновили файл конфигурации. Кроме того, проверьте, решает ли проблему разблокировка учетной записи (с помощью запроса ALTER LOGIN WITH PASSWORD = UNLOCK). Если вы видите ошибки в журнале ошибок SQL, убедитесь, что ваш SQL-сервер не атакован. И последнее, но не менее важное: убедитесь, что часы сервера и клиентского компьютера установлены правильно.

Вы можете столкнуться с ошибкой 18456, если SQL-сервер не имеет повышенных разрешений на выполнение своей операции, и запуск его от имени администратора (или отключение элементов управления UAC на сервере) может решить проблему.

Откройте SQL Server от имени администратора

  1. Щелкните Windows и введите SQL Server Management Studio.
  2. Теперь щелкните правой кнопкой мыши SMSS и выберите «Запуск от имени администратора».Запустите Microsoft SQL Server Management Studio от имени администратора.
  3. Затем нажмите Да (если получено приглашение UAC) и проверьте, не содержит ли SQL-сервер ошибки 18456.
  4. Если нет, проверьте, решает ли проблему отключение UAC на сервере.

Запуск SQL Server в однопользовательском режиме

  1. Щелкните Windows, введите и откройте диспетчер конфигурации SQL Server.
  2. Теперь щелкните правой кнопкой мыши службу SQL Server (на вкладке «Службы SQL Server») и выберите «Свойства».Откройте свойства SQL Server
  3. Затем перейдите на вкладку Параметры запуска и в поле Укажите параметр запуска введите: -m
  4. Теперь нажмите «Добавить» и примените изменения.Добавьте параметр «-m» к параметрам запуска SQL Server.
  5. Затем щелкните правой кнопкой мыши службу SQL Server и выберите «Перезагрузить».Перезапустите службу SQL Server.
  6. Теперь щелкните Windows, введите: SQL Server Management Studio, щелкните правой кнопкой мыши SMSS и выберите Запуск от имени администратора.
  7. Теперь проверьте, можете ли вы подключиться к SQL Server от имени администратора.
  8. Если это так, добавьте учетную запись домена на SQL-сервер и назначьте ей роль SysAdmin.
  9. Теперь вернитесь в окно диспетчера конфигурации SQL Server и удалите параметр -m на вкладке Параметры запуска.
  10. Затем перезапустите службу SQL Server (шаг 3) и проверьте, нормально ли работает SQL-сервер.

Если проблема не исчезнет, ​​проверьте, правильно ли настроены параметры запуска или сведения о пути. Если проблема все еще существует, убедитесь, что ваша учетная запись пользователя имеет необходимые разрешения для служб базы данных / отчетов, а затем проверьте, решена ли проблема.

Включите протокол TCP / IP в диспетчере конфигурации сервера.

Код ошибки 18456 на сервере SQL означает, что серверу не удалось аутентифицировать соединение, и это может произойти, если протокол TCP / IP, необходимый для доступа к базе данных в сети, отключен в диспетчере конфигурации сервера. В этом контексте включение TCP / IP в диспетчере конфигурации SQL Server может решить проблему.

  1. Щелкните Windows и разверните Microsoft SQL Server, указав год, например, 2008 (вам может потребоваться немного прокрутить, чтобы найти параметр).
  2. Теперь откройте диспетчер конфигурации SQL Server и нажмите Да (если получено приглашение UAC).
  3. Затем разверните сетевую конфигурацию SQL Server и выберите Протоколы для (имя сервера / базы данных) на левой панели.
  4. Теперь на правой панели дважды щелкните TCP / IP и выберите Да в раскрывающемся списке Включено.Откройте TCP / IP в протоколах конфигурации сети SQL Server
  5. Затем примените изменения и щелкните Windows.Включить TCP / IP в SQL
  6. Теперь введите «Службы», щелкните правой кнопкой мыши результат «Службы» и выберите «Запуск от имени администратора».Откройте службы в качестве администратора
  7. Затем щелкните правой кнопкой мыши SQL Server (с именем сервера) и выберите «Перезагрузить».Перезапустите службу SQL в окне служб.
  8. Теперь проверьте, очищен ли SQL-сервер от ошибки 18456.

Если это не помогло, убедитесь, что вы подключаетесь к правильному порту SQL-сервера (особенно, если вы используете сервер в многосерверной среде).

Измените режим аутентификации SQL Server

Сервер SQL может отображать ошибку 18456, если метод аутентификации сервера SQL не настроен должным образом (например: вы пытаетесь войти в систему с использованием аутентификации сервера SQL, тогда как сервер настроен на использование аутентификации Windows). В этом случае изменение метода аутентификации SQL-сервера может решить проблему. Прежде чем двигаться дальше, убедитесь, что для текущего пользователя включен статус входа в систему (например, SA).

  1. В обозревателе объектов Microsoft SQL Server Management Studio щелкните правой кнопкой мыши свой сервер и выберите «Свойства».
  2. Теперь на левой панели выберите Безопасность, а на правой панели выберите SQL Server и проверку подлинности Windows (или наоборот).Включить SQL Server и проверку подлинности Windows
  3. Затем примените изменения и в обозревателе объектов щелкните правой кнопкой мыши сервер.
  4. Теперь выберите «Перезагрузить» и после перезапуска проверьте, можете ли вы подключиться к базе данных без ошибки 18456.

Если вы не можете войти в SQL, вы можете установить MS Power Tools и выполнить следующую команду с повышенными привилегиями:

psexec.exe -i -s ssms.exe

После этого вы можете использовать учетную запись установки SQL, чтобы внести изменения, а также убедиться, что учетная запись SA не отключена:

Включите учетную запись SA и сбросьте пароль учетной записи

Если вы не можете подключиться к SQL Server, то включение учетной записи SA SQL-сервера и сброс его пароля может решить проблему.

  1. Запустите Microsoft SQL Server Management Studio (возможно, вам придется использовать учетную запись администратора домена) и разверните Безопасность.
  2. Затем дважды щелкните Logins и откройте SA.Откройте учетную запись SA в Microsoft SQL Server Management Studio.
  3. Теперь введите новый пароль и подтвердите его (убедитесь, что вы используете надежный пароль).
  4. Затем перейдите на вкладку Server Roles и убедитесь, что выбраны следующие роли: Public SysadminВключение ролей общедоступного сервера и сервера системного администратора для учетной записи SA
  5. Теперь перейдите на вкладку «Статус» и на правой панели выберите «Включено» (в разделе «Вход»).Включение учетной записи SA в SQL
  6. Затем примените изменения и нажмите кнопку Windows.
  7. Теперь введите Services и щелкните его правой кнопкой мыши.
  8. Затем выберите «Запуск от имени администратора» и перейдите к службе SQL Server.
  9. Теперь щелкните его правой кнопкой мыши и выберите «Перезагрузить».
  10. После перезапуска службы проверьте, устранена ли ошибка 18456 SQL-сервера.

Создайте новый логин и перезапустите службы Reporting Services

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

  1. Запустите Microsoft SQL Server Management Studio и разверните вкладку «Безопасность».
  2. Затем разверните Логины и щелкните его правой кнопкой мыши.
  3. Теперь выберите «Новый вход» и введите учетные данные (в имени входа выберите учетную запись компьютера), если используется проверка подлинности SQL Server.Создать новый логин в SQL Server
  4. Затем не забудьте снять флажок «Пользователь должен сменить пароль при следующем входе в систему» ​​и выберите базу данных.
  5. Теперь перейдите на вкладку Server Roles и выберите роль Public.
  6. Затем на вкладке «Сопоставление пользователей» обязательно выберите базу данных и выберите db_owner.Выберите db_owner для базы данных в SQL
  7. Теперь примените ваши изменения и щелкните Windows.
  8. Затем введите Services и щелкните правой кнопкой мыши результат Services. Затем выберите Запуск от имени администратора.
  9. Теперь щелкните правой кнопкой мыши службу отчетов SQL Server и выберите «Перезагрузить».Перезапустите службу отчетов SQL Server.
  10. Затем повторно подключитесь к базе данных и проверьте, очищен ли сервер SQL от ошибки 18456.

Если это так, убедитесь, что вы создали пользователя в BUILTIN administrators, и затем вы можете использовать этого пользователя для управления SQL Server. Если вы восстановили базу данных из резервной копии, будет лучше удалить и повторно добавить пользователей, чтобы удалить все старые записи пользователей. Если вы хотите запустить SQL-сервер от имени другого пользователя, введите Microsoft SQL Server в поиске Windows, Shift + щелкните правой кнопкой мыши на SQL Server и выберите «Запуск от имени другого пользователя». И последнее, но не менее важное: проверьте, решает ли проблема использование Azure Data Studio с сервером SQL.

Содержание

  • 1 Определение источника ошибки авторизации SQL Server (18456 ошибка)
    • 1.1 Ошибка входа 18456
    • 1.2 Определение ошибки авторизации.

Недавно решил навести порядок в журнале подопечного SQL сервера. Большое количество записей состояло из ошибки 18456 — ошибка авторизации, причем в качестве источника стояла local system — что немного вводило в ступор. Вроде как кроме инстанса SQL сервера ничего больше на сервере не крутится.  В итоге выяснилось, что это был Report Server, которому была дадены необходимые права и журнал сервера стал горрраздо читабельнее )). В ходе писоков нашел мануал, котороый в принципе один мог бы почомчь разбораться в ситуации, если бы попался первым )http://www.eraofdata.com/blog/2009/01/. За это его перевод:


Определение источника ошибки авторизации SQL Server (18456 ошибка)

Всем нам периодически приходится определять источник ошибок авторизации  (login failures), и, заметив рост количества тем на форумах с просьбой о помощи в это вопросе, я решил начать новый год с поиска быстрого способа точного определения этих ошибок.   Я порыскал в интернете,в предположении, что эта тема была много раз обсосана и закрыта на других форумах или блогах, но с удивлением обнаружил, что хотя и есть много статей о том, что такое «ошибка авторизации» и что означают все коды, возвращаемые в сообщениях ошибки, я не смог найти пошагового описания того, что должен сделать DBA для определения откуда пришел запрос на авторизацию приведший к ошибке. Эта запись — моя попытка исключить этот пробел и показать как выделить процесс, вызывающий эту проблему.

Технология крайне не зависима от версий,  так что это не критично в каком пакете Вы это будете делать, но я предполагаю, что вы знаете как использовать SQL Server Profiler для трассировки запросов.

Ошибка входа 18456

Ошибка входа вызывает ошибку 18456 и сопровождается соответствующей записью в журнале SQL сервера (SQL Server 2000 не отображает IP адрес):

20090115 09:40:24.55 Logon Error: 18456, Severity: 14, State: 8.

20090115 09:40:24.55 Logon Login failed for user ‘DomainUser’. [CLIENT: xxx.xxx.xxx.xxx]

20090115 09:40:24.55 Logon Error: 18456, Severity: 14, State: 8.20090115 09:40:24.55 Logon Login failed for user ‘DomainUser’. [CLIENT: xxx.xxx.xxx.xxx]

Severity в логе указывает на серьезность ошибки. Severity: 14 означает, что ошибка может быть исправлена пользователем, что вполне логично для ошибок авторизации.
Следующее число указывает на номер состяния. Большинство ошибок имеют связанный с ними  номер  состояния , который обозначает дополнительную информацию обычно уникальную для каждой ошибки. Для ошибки авторизации состояние 8, показанное в приведенном выше примере, указывает что был использован некорректный пароль.

Следовательно, номер состояния предоставляет неоцинимую информацию  о причине ошибки авторизации и зачастую его достаточно для определения причины возникновения ошибки 18456.

В приведенной ниже таблице приведены расшифровки некоторых значений:

Состояние (State) Описание ошибки
1 Аккаунт заблокирован
2 ID пользователя не верно
5 ID пользователя не верно
7 Используемый логин отключен
8 Неверный пароль
9 Неподходящий пароль
11-12 Авторизация верная, но доступ к серверу невозможен
16 авторизация верная, но доступ к выбранной базе не разрешен
18 Истек срок действия пароля
27 Первоначальная база данных не найдена
38 Авторизация верная, на база данных не доступна( или нет разрешения)

Следующий пункт информации — логин (SQL сервера или Windows), сгененрировавший ошибку, затем IP адрес хоста, скоторго была предпринята попытка авторизации, который предоставляет полезную информацию для перекрестного поиска, для подтверждения что мы исследуем верный хост для выделения ошибки авторизации.

Определение ошибки авторизации.

Если информации, содержащейся в журнале ошибок не достаточно для определения источника ошибки, то следующей шаг это запустить трассировку SQL сервера для получения большего количества информации.
Наикратчайший путь для определения ошибок авторизации лежит через трассироку с помощью SQL Server Profiler (SSP).

Если Вы используете SQL Server 2005 или выше т у Вас до сих пор включен трассировщик по умолчанию (который включен по умолчанию в установке из коробки), тогда вам не нужна начинать новую трассировку. Проверьте вместо этого мою запись The SQL Server default trace.

Если у вас более ранняя версия SQL Serverm или же трассировка по умолчанию выключена (или же у вас проблемы с английским) — читайте дальше. (Нничего страшного не произойдет, если запустите еще один поток трассировки).

Запустите SSP, и, используя или ваш любимы шаблон трасировки, или же создав новый (File > Templates > New Templates…), убедитесь что выбраны следующие колонки:

ClientProcessID

Hostname

LoginName

NTUserName

NTDomainName

ApplicationName

Эти столбцы можно найти в диалоговом окне Trace Properties в закладке Events Selection. Если они не видны, поставте флажок «Show all columns». Обратите внимание, что столбе SPID выбран по умолчанию и не может быть убран.

В столбце Events выберите поле Audit Login в группе Security Audit. Так как мы заинтересованы только в ошибках авторизации, то это будет единственным выбранным событием, и мы будем уверенны что своим вмешательством мы создадаим минимальную нагрузку на систему. В «боевых» системах не желательно (ИМХО) запускать гафическую трассировку SSP на сервере, всегда желательно использовать трассировку на стороне сервера.

Нижеследующий рисунок показываает завршенный шаблон трассировки:

Шаблон поиска ошибки авторизации

Шаблон поиска ошибки авторизации

Это может выглядеть несколько уныло, но мы заинтересованы только в поиске конкретной ошибки.

Шаг 1

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

Шаг 2

Столбец Hostname должен содержать запись имени сервера на котором произошел неверный логин, и ClientProcessID должен содержать идентификатор проблемного процесса (PID) (или процессов, если есть несколько связанных процессов).

Шаг 3

Заходим на сервер, на которм произошла ошибка и просматриваем подходящие процессы с помощью диспетчера задач (Task Manager). Для просмотра PID с помощью диспетчера задач, запустите этот диспетчер (Shift+Ctrl+Esc), идем в пунтк View->Select Columns… и выбираем флажок PID (Process Identifier) и нажимаем Ok.

Нажимаем на вкладку Processes для просмотра процессов, запущенных на сервере (убедитесь что стоит флажок Show all processes from all users) и нажмите на заголовок колонки PID, для сортировки по убыванию или возрастанию.

Шаг 4

После того, как Вы определите проесс по его PID, остается всего-лишь вопрос определения где процесс хранит настройки авторизации SQL сервера и проверить их Обычно, это процесс является сервисом, так что это вопрос всего0лишь вопрос запуска оснастки Services через Панель управления, или Start->Run-> services.msc

Так что, счастливой охоты!

Понравилась статья? Поделить с друзьями:
  • Ошибка 1920 не удалось запустить службу kaspersky
  • Ошибка 18452 sql server
  • Ошибка 1920 как исправить
  • Ошибка 184 установка radeon software не может быть продолжена виндовс 10 как исправить
  • Ошибка 1920 microsoft office 2010