【问题标题】:Can't access database from code but can using SSMS无法从代码访问数据库,但可以使用 SSMS
【发布时间】:2019-06-15 18:20:35
【问题描述】:

我可以使用

从 SSMS 正常登录数据库
localhost\MSSQLSERVER01

用户名:DOMAIN\user.name(Windows 身份验证)

但是当我尝试从我的应用程序连接时,我得到了

Error Number:18456,State:1,Class:14
Login failed for user 'DOMAIN\User.Name'.   

即使我的帐户可以访问 SSMS 中的数据库并具有系统管理员权限。

查看 SQL 日志,每当登录失败时,我都会看到此消息:

2019-01-22 09:46:42.13 Logon       Login failed for user 'DOMAIN\User.Name'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]
2019-01-22 09:48:33.74 Logon       Error: 18456, Severity: 14, State: 5.

我尝试将NT AUTHORIRTY\NETWORK SERVICE 添加到/server/security/logins/server/database/security/users,但没有任何区别

为什么会发生这种情况,或者当错误消息基本上没有给我任何信息时,我该如何调试?


连接字符串:

Server=localhost; Database=dbname; Trusted_Connection=True;MultipleActiveResultSets=true;

但我也试过

Server=localhost\\MSSQLSERVER01; Database=dbname; Trusted_Connection=True;MultipleActiveResultSets=true;

结果相同

【问题讨论】:

  • 你能显示你的连接字符串吗?
  • Windows 事件查看器是否记录此内容?不确定是不是。
  • @Gaurav 我把它添加到我的问题中
  • 您缺少 Integrated Security = true 请添加。

标签: c# ssms sql-server-2017


【解决方案1】:

你的连接字符串应该是这样的:

数据源=Server\gaurav.goel;database=DBName;Integrated Security=True;MultipleActiveResultSets=True

另一种方法是使用 UDL 文件 - 在您的机器上创建一个文本文件并将其扩展名更改为 UDL。然后打开此文件并尝试将您的连接添加到其中并检查您是否可以连接。

【讨论】:

  • 进行此更改后我仍然看到相同的错误
  • ok 在您的机器上创建一个文本文件并将其扩展名更改为 UDL。然后打开此文件并尝试将您的连接添加到其中并检查您是否可以连接
  • 似乎与调用哪个配置文件以及环境变化有一些混淆(这意味着我的 sql 实例被称为localhost\mssqlserver01应该只是@987654322 @ - 对此感到抱歉.. 但感谢您提供的超级有用的 UDL 提示
  • 您能否将其标记为答案,因为它对您有所帮助:)。我已经更新了我的答案。
【解决方案2】:

如果尚未完成,可能还需要做的其他事情:

  • 在SSMS中右击服务器,选择“属性”选项。

  • 选择“连接”选项卡。

  • 选中“允许远程连接到此服务器”选项。

如果您尝试使用 Windows 身份验证远程访问它:

  • 右击服务器,点击属性

  • 转到安全页面

  • 在服务器身份验证下选择 SQL Server 和 Windows 身份验证模式单选按钮

  • 点击确定

  • 重启 SQL 服务

取自:https://stackoverflow.com/a/23395581/6391339

【讨论】:

  • 更新了我的答案
猜你喜欢
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多