发生传输级错误 - 指定的网络名称不再可用 天蓝色突触

问题描述

我有两个表要合并

表A

COL A COL B COL C
1 2 价值
2 2 价值

表 B

COL A COL B COL C
1 2 价值
2 2 新值

合并 sql

MERGE INTO dbo.TableA AS target  
    USING dbo.TableB AS source 
    ON 
    (
        target.ColA = source.ColA AND
        target.ColB = source.ColB 
    )
    WHEN MATCHED THEN
            UPDATE SET 
            target.COLC = source.COLC
    WHEN NOT MATCHED THEN  
            INSERT (COLA,COLB,COLC)  
            VALUES (source.COLA,source.COLB,source.COLC);

每当我运行上面的代码时,我的数据库(Azure 突触、专用池)都会引发以下错误,然后停止响应大约 20 秒。

“从服务器接收结果时发生传输级错误。(提供者:TCP 提供者,错误:0 - 指定的网络名称不再可用。)”

我怀疑它与合并的更新部分有关。因为我第一次运行语句 (表 A 中没有任何数据)它可以正常工作并插入两行。但是如果我再次运行它,它会因传输级错误而失败

解决方法

可能是超时了,如果你使用的是Sql Server Management Studio,可以尝试扩展:

Timeout settings

您的帖子没有指明您使用的是什么客户端 - 如果是 .NET 代码,可能想在您的连接或查询上设置 CommandTimeout

如果这不起作用,如果查询执行超时尚未为零,则可能会延长查询执行超时:

Timeout settings (2)