【问题标题】:How to see the connection string used to connect to SQL Server如何查看用于连接 SQL Server 的连接字符串
【发布时间】:2009-12-02 04:29:05
【问题描述】:

有没有办法查看用于连接 SQL Server 的连接字符串?或者更确切地说,在失败的登录尝试中使用了什么字符串。

在处理复杂系统时,我经常看到由于某些服务无法登录 SQL 导致的故障。我猜测连接字符串可能是错误的,但由于我看不到它是什么,所以我经常无法确定谁真正遇到了连接问题,以便能够重新配置并修复它。

日志中的错误只是说类似 2009-12-01 20:16:31.05 登录 SSPI 握手失败,错误代码为 0x8009030c,同时建立具有集成安全性的连接;连接已关闭。 [客户:10.124.172.65] 2009-12-01 20:16:31.06 登录错误:18452,严重性:14,状态:1。 2009-12-01 20:16:31.06 登录 登录失败。登录来自不受信任的域,不能用于 Windows 身份验证。 [客户:10.234.222.13]

是否有一些我可以启用的审核或一种工具来嗅出连接字符串,以便我可以通过分析字符串本身来找出字符串有什么问题?

【问题讨论】:

    标签: sql sql-server logging connection-string


    【解决方案1】:

    不是真的。连接字符串只是客户端应用程序和 SQL 客户端库之间的问题,没有现成的工具可以窥探到那个狭窄的地方。

    但是,在您的示例中,不需要知道连接字符串。您知道连接字符串正在使用集成安全性(“SSPI 握手”是根据定义),您知道它正在尝试连接到记录此错误的服务器,您知道失败的原因(错误 SEC_E_LOGON_DENIED),并且您知道哪个客户端尝试连接(10.234.222.13)。连接字符串中绝对没有任何内容可以帮助解决此问题。

    您看到的错误是 SSPI 错误,特别是 Kerberos/NTLM 错误,您应该使用 Kerberos/NTLM 工具和方法来处理它。大多数(如果不是全部)Kerberos/NTLM 问题都可以使用Troubleshooting Kerberos Errors 文档进行故障排除。

    在您的情况下,您可能会找到常见的罪魁祸首之一:

    • 在尝试远程连接的本地帐户下运行的服务。
    • 尝试跨不受信任的域边界进行连接
    • (很可能)使用过期密码运行的服务

    【讨论】:

    • 听起来很有帮助。当我从主机文件中删除一些条目时,我注意到问题消失了,但我需要这些条目才能运行我的服务。鸡和蛋的问题。也许我可以以某种方式重新配置这些 - 使用环回 IP 而不是 10.234.222.13 或其他东西。
    【解决方案2】:

    首先,没有一种开箱即用的集中方式。

    但是,这些类型的问题是拥有 DAL 的一个很好的论据,您可以在其中集中所有连接和事务管理,以及相关的错误日志记录。

    SQL Profiler 也可能会为您提供一些信息——尽管可能不足以调试问题,但它可能会在错误发生时间的意义上为您提供提示。

    【讨论】:

    • 我对时间没有问题 - 当我尝试打开网站时会发生这种情况。我对代码知之甚少,我想要一个适用于任何项目的解决方案,因此找出连接字符串的方法将非常有帮助。无论如何 - 这次我已经设法通过我在另一条评论中提到的好猜测来解决它。我在我的主机文件中配置了 FQDN 以匹配站点绑定,并且它使用的是外部接口的 IP。将其修改为 127.0.0.1 后 - 它开始正常工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多