连接字符串因网络名称超时,但适用于 IP

Connection String times out with network name, yet works with IP

机器 1

数据库。包含我们网站使用的所有信息。


机器 2

网络服务器。使用 IIS 托管两个站点:


工作原理如下:

  1. 用户转到机器 2 上托管的站点之一并输入他们的公司信息
  2. 机器 1 查询该公司的连接字符串。
  3. 站点使用连接字符串连接到机器 1 上的正确数据库。

问题是大约 1/3 的连接字符串使用网络名称(例如 "Data Source='Machine1';"),而另外 2/3 使用 IP 地址(例如 "Data Source=192.168.1.200;")。通过生产站点连接时,如果使用带有网络名称的连接字符串,则会发生超时。但是,如果同一用户使用相同的凭据登录备份站点,则无论使用哪个 'Data Source',一切都正常。

我创建了一个简单的 Powershell 脚本来测试机器 2 的连接;网络名称和 IP 地址都有效,这让我怀疑这是一个 IIS 或 web.config 问题。我对两者都进行了广泛的研究,这些是我注意到的唯一区别:

几天来我一直在努力反对这个问题。考虑到这是一个生产网站,我可以采取的步骤非常有限,并且 数据库。任何建议表示赞赏。

尝试将网络库放在连接字符串中以强制使用 tcp。

参见 connectionstrings.com/define-sql-server-network-protocol

;网络库=DBMSSOCN;

PS

是的。去过也做过。 4 天的 "on site" 客户访问......这就是协议......因此我学会了如何通过连接字符串强制它。你也可以试试这个:

创建一个(临时的)系统 DSN(控制面板中的 ODBC),名字很奇怪,比如 "peanutbutter"。某处有一个客户端连接按钮。强制它到 tcp。然后在您的注册表中搜索花生酱并找出网络库的存储方式。

一图胜千言。请参见下图的左侧。 (来自旧互联网的随机图像)