繁体   English   中英

SQL Server 在远程服务器上插入记录时出现“等待操作超时”,但不在本地

[英]SQL Server “The wait operation timed out” when inserting records on remote server, but not locally

部署的 Windows 应用程序使用到 SQL Server 2012 的远程连接字符串存在一个奇怪的问题。

插入记录时,SQL Server 在相对较短的时间后超时,提示“等待操作超时”。 我无法调试已部署的应用程序以找出它发生的原因以及它发生在代码中的位置。

但是,在具有本地连接的开发机器上使用相同的数据库时,我没有收到此错误。

一般使用的代码是:

void MapData( SqlTransaction transaction, Dictionary<int, IDataObject> items )
{
    foreach ( var i in items )
    {
        transaction.Save( "CHECKPOINT" );

        try
        {
            ImportItem( transaction, i );
        }
        catch ( Exception e )
        {
            transaction.Rollback( "CHECKPOINT" );
        }
    }

    ReportStatus();
}   

虽然这段代码一直在工作,但我不确定远程连接。 我们只有这种不起作用的情况。

它可以是什么? 有没有比在循环中使用 Save() 和 Rollback() 更可靠或更高效的方法? 我不想使用TransactionScope产生新的“子”事务。

谢谢!

您的事务花费的时间太长(不确定它是提交还是回滚)。 为了理解为什么您必须运行跟踪才能获得性能指标。

但是为了让它工作,你可以增加你的超时时间。 SqlCommand CommandTimeout设置为更大的值或 0(无超时)。 此外,连接超时用于事务超时 - 通常仅在昂贵的回滚时才会出现问题。 您可以在连接字符串中指定它,例如Connection Timeout=30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM