登录到Microsoft SQL Server错误:18456


295

尝试连接到SQL Server时出现此错误。

Microsoft SQL Server错误:18456

有人可以告诉我错误代码的含义吗?


6
粗略的搜索似乎表明该错误代码是登录失败,并且通常伴随着更详细的信息。
David

而且更详细的信息应该在sql server错误日志中。该数字本身并没有告诉您太多信息,因此,破解者无法使用该数字作为尝试失败的线索。
Tony Hopkinson


1
我只需要run as administrator
-Jacksonkr

Answers:


706

如果尝试使用“ SQL Server身份验证”进行连接,则可能需要修改服务器身份验证:

在对象资源管理器中的Microsoft SQL Server Management Studio中:

  1. 右键单击服务器,然后单击 Properties

  2. 转到Security页面

  3. Server authentication选择SQL Server and Windows Authentication mode单选按钮下

  4. 请点击 OK

  5. 重新启动SQL服务


32
谢谢。遗憾的是,当您尝试添加用户时,没有警告消息。
JohnnyBizzle,2015年

12
您确切的意思是“右键单击服务器并单击属性”,这在哪里?
emcor 2015年

9
他表示对象浏览器中的最高节点-带播放按钮的黄色圆柱体
JGilmartin

21
这是人们遇到的一个非常普遍的问题。您可以创建SQL Server登录名到您的内心的事实,而不必意识到此简单设置已关闭,这确实使IMO感到困惑。我建议这是正确的答案。

7
@JGilmartin,当您遇到错误18456时,您将如何精确地连接到对象资源管理器中的服务器,这意味着您无法连接
Shai Alon

69

查看数据平台团队的这篇博客文章。

http://blogs.msdn.com/b/sql_protocols/archive/2006/02/21/536201.aspx

您确实需要查看错误消息的状态部分以找到问题的根本原因。

2, 5 = Invalid userid
6 = Attempt to use a Windows login name with SQL Authentication
7 = Login disabled and password mismatch
8 = Password mismatch
9 = Invalid password
11, 12 = Valid login but server access failure
13 = SQL Server service paused
18 = Change password required

之后,Google如何解决此问题。


42
并不是要吹牛角,但我在这里整理了很多信息:sqlblog.com/blogs/aaron_bertrand/archive/2011/01/14/…–
Aaron Bertrand

你总是吹牛角...谢谢你的投票?但是您的清单确实更加完整!我认为大多数人都不知道如何使用Google。
CRAFTY DBA 2014年

1
我很想投票,但是我很痛苦,因为回答可以由Google回答的问题只会鼓励人们继续在这里问而不是搜索...
Aaron Bertrand

13
Google可能会回答这里99%的问题,但是简单的问题和答案可以节省大量的搜索时间,并且省去了很多不必要的文章/博客,因此,我投了赞成票!
克里斯·内维尔

12
在这里,当我使用google时,我在这里找到答案(谷歌搜索SO优于SO搜索SO ...)
Cos Callis

27

打开之前,右键单击并选择“以管理员身份运行”。这为我解决了问题。


这就是我的解决办法。我State: 1在错误消息中。
GraehamF

@Gsic你是一个真正的救星。我已经奋斗了一天多,您的解决方案解决了它。谢谢
Karthik '18

在打开之前??
麦克,

11

如果“状态”为“ 1”,请首先查看错误的详细信息。确保在SQL Server / Properties / Security下为SQL和Windows身份验证设置数据库。

对于其他状态,请参见上述答案..


1
天哪,谢谢!我的登录均无任何作用,然后我偶然发现了这个答案,发现我的SQL Express实例以某种方式从“ SQL和Windows身份验证”更改为“ Windows身份验证”。改回原样,一切正常。
伊恩·坎普

1
而且,关闭SSMS的次数还不够,需要重新启动SqlServer服务才能使更改生效。
拉维德·戈登伯格

10

我已经遇到了这个问题。

请看所附图片,

步骤1:转到服务器属性

步骤2:前往安全性

步骤3:将服务器身份验证更改为SQL Server和WindowsAuthenication模式

并重新启动您的Sql服务器。

在此处输入图片说明


9
  1. 检查服务器->属性中是否启用了混合模式身份验证
  2. 然后在服务器->安全中创建登录名
  3. 在数据库中为此登录名创建一个用户
  4. 然后通过右键单击实例重新启动服务器,然后选择重新启动

5

只是发生在我身上,结果与这里列出的所有其他情况都不一样。

我碰巧在同一群集中托管了两个虚拟服务器,每个虚拟服务器都有自己的IP地址。主机将其中一台服务器配置为SQL Server,将另一台服务器配置为Web服务器。但是,SQL Server已安装并在两者上运行。主机忘记提到哪个服务器是SQL,哪个服务器是Web,所以我只是假设第一个是Web,第二个是SQL。

当我连接到SQL Server(我以为是)并尝试通过SSMS连接时,选择Windows身份验证,我收到了此问题中提到的错误。经过多番努力,我遍历了所有设置,包括SQL Server网络配置,MSSQLSERVER协议:

TCP / IP配置的屏幕截图

双击TCP / IP给我:

TCP / IP属性,显示错误的IP地址

该IP地址是另一台虚拟服务器的!最终,这使我意识到我只是在服务器之间感到困惑,并且在第二台服务器上都运行良好。


4

如果更改登录用户凭据或添加新的登录用户,则在需要登录后,您将必须重新启动SQL Server服务。为了那个原因

转到->服务 灰色排

然后转到SQL Server(MSSQLSERVER)并停止并重新启动

现在尝试登录,希望您可以。

谢谢


3

18456错误状态列表

错误状态错误描述

  • 状态2和状态5无效的用户ID
  • 状态6尝试通过Windows身份验证使用Windows登录名
  • 状态7登录已禁用且密码不匹配
  • 状态8密码不匹配
  • 状态9密码无效
  • 状态11和状态12有效登录但服务器访问失败
  • 状态13 SQL Server服务已暂停
  • 状态18需要更改密码

潜在原因以下是原因列表和一些简要说明,该怎么办:

未启用SQL身份验证:如果您是第一次在SQL Server实例上使用SQL登录,则经常会发生错误18456,因为服务器可能设置为Windows身份验证模式(仅)。

如何解决?检查此SQL Server和Windows身份验证模式页。

无效的用户ID: SQL Server在试图获取的服务器上找不到指定的用户ID。最常见的原因是该用户标识尚未在服务器上被授予访问权限,但这也可能是一个简单的错字,或者您无意中尝试连接到另一台服务器(如果使用多个服务器则为典型值)

密码无效:密码错误或输入错误。请记住,该用户名在不同的服务器上可以具有不同的密码。

不太常见的错误:可能在服务器上禁用了userID。Windows登录已提供用于SQL身份验证(更改为Windows身份验证。如果使用SSMS,则可能必须以其他用户身份运行才能使用此选项)。密码可能已过期,可能还有其他一些原因……。如果您知道其他任何事情,请告诉我。

18456状态1解释:通常,Microsoft SQL Server将为您提供错误状态1,这实际上并不意味着您有18456错误。状态1用于隐藏实际状态以保护系统,这对我来说很有意义。下面是具有所有不同状态的列表,有关获取准确状态的更多信息,请访问了解SQL Server 2005中的“登录失败”(错误18456)错误消息

希望能有所帮助


2

右键单击“用户”,转到“属性”,将默认数据库更改为“ master”。这是图像的屏幕打印,它显示了如果有错误19456时必须检查的内容。有时它默认为用户没有的数据库允许


2

首先转到开始栏,然后搜索本地服务,然后单击“查看本地服务”,然后它将打开服务窗口,然后转到SQL Server(MSSQLSERVER),右键单击它,然后单击“停止”,然后再次右键单击它,然后单击“启动”。现在,您可以登录并将用户名设置为“ sa”,而密码是您的密码。



1

如果这是域成员PC,请检查是否已连接到网络。另外,请确保您不在双家用PC上,因为由于网络度量标准,您的路由可能不正确。当我无法连接到域时,SQL Windows身份验证切换到了本地PC帐户,但将其注册为SQL身份验证时,出现了此问题。禁用无线适配器并重新启动后,Windows集成将切换回域帐户并通过身份验证。我已经像您一样设置了混合模式,因此以前的帖子不适用。



0

我认为,如果您尝试使用Active Directory中定义的用户登录,但是尝试在登录屏幕中使用“ SQL Server身份验证”,则会发生这种情况。我不知道如何使用NTLM / Windows身份验证指定其他用户:单击“ Windows身份验证”下拉菜单时,用户名和密码被清空,只能以我自己的身份登录。


0

在我的情况下,多次错误尝试锁定了该帐户。为此,我尝试运行以下查询并成功了:ALTER LOGIN WITH PASSWORD = UNLOCK并确保为特定用户设置了“ Enforce Password Security”选项,以免被选中右键单击Sql Server->属性。


0

SQL Server连接疑难解答

如果您无法使用SQL身份验证进行连接,请尝试其他解决方案。

您可以尝试以下方法:

检查连通性

  • 禁用防火墙。
  • 在1434上运行PortQry并检查答案。

检查状态

  • 尝试连接SSMS或sqlcmd并检查消息。
  • 状态1很少有文档记录,但这仅意味着您无权知道真实状态。
  • 查看SQL Server目录中的日志文件以了解状态。

国家5

什么 ?我的登录名不存在?就在那,我可以在SSMS中看到它。怎么会这样 ?

最可能的解释是最正确的解释。

登录状态

  • 销毁它,重新创建它,然后启用它。
  • 重设密码。

要么...

“您没有看正确的地方”或“您所看到的不是您的想法”。

本地数据库和SQLEXPRESS冲突

如果您通过Windows身份验证与SSMS连接,并且您的实例名为SQLEXPRESS,则可能是在查看LocalDb不是正确的服务器。因此,您刚刚在LocalDb上创建了登录名。

当您通过带有SSMS的SQL Server身份验证进行连接时,它将尝试连接到尚不存在您所喜爱的登录名的SQLEXPRESS真实服务器。

附加说明:如果没有忘记一些奇怪的连接字符串,请检查“连接参数”选项卡。



0

对我来说,另一个可行的解决方案。 serever->security->logins->new logins->General->创建您的用户名作为登录名,单击sql server身份验证添加密码

取消选中密码验证三个复选框。这将起作用。

记住更改服务器属性->“安全性从” Server authenticationSQL Server and Windows Authentication mode


0

您可以在Linux中为mssql更改sa帐户的密码

sudo / opt / mssql / bin / mssql-conf设置

The license terms for this product can be downloaded from
 http://go.microsoft.com/fwlink/?LinkId=746388 Jump Jump
and found in /usr/share/doc/mssql-server/LICENSE.TXT.
Do you accept the license terms? [Yes/No]:yes
  Setting up Microsoft SQL Server
Enter the new SQL Server system administrator password:  --Enter strong password
Confirm the new SQL Server system administrator password: --Enter strong password
 starting Microsoft SQL Server...
 Enabling Microsoft SQL Server to run at boot...
Setup completed successfully.

0

在我的SQL实例下创建新的sysadmin用户后,出现此错误。我的管理员用户是在特定域MyOrganization / useradmin下创建的

在断开连接的环境中使用useradmin可以使您使用SQL Server身份验证创建其他用户,但是一旦尝试登录,您将获得

Microsoft SQL Server错误:18456

要解决此问题,请尝试再次连接到您的组织网络并在连接时创建用户,然后您可以断开连接并可以使用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.