如何让SQL Server找到与提供的名称匹配的登录?

时间:2011-08-19 09:29:07

标签: sql-server-2008 login sql-server-express

我刚刚将数据库备份恢复到本地SQL Server Express实例。

  1. 在服务器实例节点下的管理工作室中,我访问了:安全性 - >登录 - >新登录...
  2. 然后我填写了登录名,密码并选择了SQL Server身份验证。在底部,我选择了新恢复的数据库作为默认数据库。
  3. 在左侧的“用户映射”选项卡中,我将用户映射到新恢复的数据库并赋予其“db_owner”角色。
  4. 当我尝试登录时,日志中会给出以下错误:

      

    用户'用户名'登录失败。原因:找不到与提供的名称相匹配的登录信息。 [客户:]

    如何让SQL Server找到与我提供的名称相匹配的登录信息?

    其他信息:

    • 已启用命名管道
    • 启用TCP / IP
    • 允许远程连接

2 个答案:

答案 0 :(得分:9)

请确保为您创建的用户选择了“SQL Server身份验证”模式 服务器>安全>登录选项。

另一种可能性是,您使用Management Studio创建了SQL Server登录,并且选中了要求用户在首次登录时更改密码的选项。如果您没有立即使用Management Studio登录并更改密码,则尝试从其他计算机登录时无法弹出更改密码的对话框,因此无法使用。

通过删除用户并再次创建来尝试。

答案 1 :(得分:0)

这很旧,但是对于某些使用EF核心和VS代码的ASP.Net Core 2.2遇到错误的人

错误号:18456,状态:1,类:14 用户'sa:password = MyPassword'登录失败。

我查看了来自SSMS的日志,发现错误为

用户'sa:password = MyPassowrd'登录失败。原因:找不到与提供的名称匹配的登录名。 [客户:MyIp]

在各处搜索后,我发现我必须在连接字符串中添加 Persist Security Info = False ,所以我的连接字符串变得像

“默认”:“持久安全信息= False;用户ID = sa;密码= MyPassword;初始目录= MyDb;服务器= MyServerIp”

我从Microsoft Docs找到了这种格式。之后,它运行良好。

默认为

persist security info = false。我没有找到任何原因,如果没有它,我的连接字符串将无法正常工作。 From here