Azure上的SQL Server:"执行超时已过期。操作完成之前经过的超时时间或服务器没有响应。"

时间:2018-06-15 14:43:41

标签: sql-server powershell

我在Powershell中本地运行脚本循环bcp,将数百个excel文件复制到Azure上的数据库(我只是输入网络信息作为bcp的参数)。在每次执行循环时,我还会进行更新表的列的查询。一开始,它工作正常。但大约一分钟后,它会停止运转并最终产生此错误。

47680 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 18250  Average : (2612.60 rows per sec.)
Exception calling "ExecuteReader" with "0" argument(s): "Execution Timeout 
Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding."

我不确定这里发生了什么。以下是查询的暂停时间:

$query = "UPDATE $tableName SET jobID = $dir_id where jobID is NULL;"
$sqlCmd3 = $connection.CreateCommand()
$sqlCmd3.Connection = $connection
$sqlCmd3.CommandText = $query
$sqlCmd3.ExecuteReader() *>$null

1 个答案:

答案 0 :(得分:0)

您是否尝试使用" ExecuteNonQuery "而不是你的" ExecuteReader "? 执行阅读器打开一个流,通过调用" EndExecuteReader "来读取您应该关闭的流。此外,您使用更新语句,这是NonQuery语句 - 只需使用ExecuteNonQuery。