![SQL Server 2008 运行并行查询时出现间歇性错误 40](https://linux22.com/image/604218/SQL%20Server%202008%20%E8%BF%90%E8%A1%8C%E5%B9%B6%E8%A1%8C%E6%9F%A5%E8%AF%A2%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%B4%E6%AD%87%E6%80%A7%E9%94%99%E8%AF%AF%2040.png)
这是我们的设置:
我们正在使用Red Gate SQL 多脚本在单个 SQL Server 2008 上的大约 1000 个数据库上运行查询。SQL Multi Script 可以配置为同时在多个数据库上并行运行查询,从而加快了这些数据库的执行速度。我们希望尽可能快地运行查询,因此我们制作了 Multi Script 来运行 25 个并行连接(Multi Script 允许的最大值)。SQL Multi Script 在台式计算机(Windows 7)上运行,并通过其主机名(myserver.mycompany.com)直接使用“sa”登录连接到 SQL Server 2008。我们的 SQL Server 2008 不是命名实例,因此我们不使用 \instancename 引用它。
问题如下:
对于相同的查询、相同的服务器、相同的数据库、相同的并行性(一遍又一遍地运行相同的操作,有时会导致一些错误,有时不会),我们有时会在 1000 个数据库中的几个数据库出现以下错误:
“消息 1214,级别 20,状态 0,行 0 与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)”
还有一件事,如果我们降低多脚本中的并行连接数,这些错误似乎就会消失,但是因为我们希望获得最大的性能,所以我们希望提高最大并行连接数。
我还发现此主题在 Red Gate 论坛上,但这并没有多大帮助
更新:
我更改了连接属性中的设置以仅使用 TCP/IP,而现在我得到的是不同的错误:
“消息 10048,级别 20,状态 0,行 0 与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:TCP 提供程序,错误:0 - 通常只允许使用每个套接字地址(协议/网络地址/端口)一次。)”
有人知道为什么会发生这种情况吗?
答案1
我会尝试仅使用 TCP/IP,而不使用命名管道。