【问题标题】:ExecuteQuery timeout on SSIS package in C#C# 中 SSIS 包上的 ExecuteQuery 超时
【发布时间】:2014-12-11 14:56:58
【问题描述】:

我继承了一个 SSIS 包,它有一个 c# 脚本任务,它从我们的 SQL Server 错误日志中读取失败的登录并报告它们。它最近开始在我们的一台服务器上超时,我想从默认的 30 增加超时。现在我有

 try
        {                
            string readFromConnection = "Data Source=" + (string)Dts.Variables["OneServer"].Value + ";Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Application Name=SSIS-Package;";

            ArrayList results = null;

            try
            {
                results = ExecuteQuery("EXEC sys.xp_readerrorlog 0,1, N'Login failed for user'", readFromConnection);
            }

如何在其中添加 CommandTimeout?还是有更好的方法?

【问题讨论】:

  • 太棒了。这在我尝试的搜索中没有出现,但可能已经解决了我的问题。我很感激。
  • @EricHauenstein 这涵盖了连接到 SQL Server 时的超时。连接后,会有一个不同的超时来控制查询的执行预计会运行多长时间,OP 使用 CommandTimeout 可以避免这种超时。但是,我对ExecuteQuery 的快速回顾并没有显示设置
  • 等待,因此获取到 sql server 的连接需要 30 秒以上(由您的连接字符串控制),或者您的查询运行时间超过默认值(30 秒)SqlCommand.CommandTimeout property
  • 在评论blinkc是正确的之后才意识到。这并没有解决查询超时问题,也不存在连接超时问题。当然,当我测试它时它运行得很好,因为查询现在不会超过 30 秒。

标签: c# ssis


【解决方案1】:

对于任何好奇的人,我将 try 重写为 SqlCommand。我使用 SqlDataReader 将结果读取到一个 Hashtable 中,然后将其放入空的 ArrayList 中,以便结果相同并且其余代码正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多