我有一个powershell脚本连接到SQL server 2012数据库,运行SQL查询和结果集到数据表中,以便将格式化的电子邮件发送给相关方。以下是问题代码段:
$CBA = New-Object System.Data.DataSet "CBAData"
$sqlConn = New-Object System.Data.SqlClient.SqlConnection("Data Source=DataSource;Initial Catalog=DataCatalog;Integrated Security = False;Connection Timeout=800;User ID = user; Password =pwd;")
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($CBAData, $sqlConn)
$adapter.Fill($CBA)
我在运行脚本时遇到错误:
Exception calling "Fill" with "1" argument(s): "Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding."
我已经尝试从最初设置的360逐渐增加SqlConnection字符串中的超时,现在高达800,但仍然有相同的问题。有没有人能够深入了解这里究竟是什么问题?我怎么能过度呢?
提前谢谢。
答案 0 :(得分:4)
如OP所述 - 默认命令执行超时为30秒。我在下面找到了:
SqlDataAdapter类
允许您增加命令执行超时(插入,更新,删除,选择命令)。所以在我的情况下,下面做了诀窍:
$ adapter.SelectCommand.CommandTimeout = 60
希望这有帮助。
答案 1 :(得分:1)
除了 Zulfiqar 的回答,这使我朝着正确的方向前进。对我来说,解决方案是在 SqlCommand 中。我在设置适配器属性时遇到的错误如下:
<块引用>在此对象上找不到属性“CommandTimeout”。验证该属性是否存在并且可以设置。
payable