Powershell脚本查询SQL DB的超时错误-执行超时已过期。超时期限

时间:2019-03-28 21:59:03

标签: sql sql-server powershell

我正在使用SQL数据库SQL的Powershell文件上收到消息。该查询工作了大约1.5年,我假设它开始超时,因为在此期间作为查询一部分而提取的数据集呈指数增长。我收到的错误消息是:

  

执行超时已过期。在操作完成之前已经过了超时时间,或者服务器没有响应。

但是,当向查询中添加$ SqlCmd.CommandTimeout = 0时,如下所示,它仍然在相同的时间后超时。 SQL中的远程查询设置是默认的600秒。似乎在网络级别存在一个问题/权限,不允许该查询中的信息指示超时时间。我还为SQL查询添加了无限超时,以防出现DB DEADLOCK,但这似乎不是问题。当我运行完全相同的查询但返回的数据较少时,它运行良好。

为什么下面的无限超时命令会被忽略?

   `

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"
    $SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName;User Id=$SQLUserName;Password=$SQLDBPWD"

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand

    $SqlCmd.Connection = $SqlConnection
    $SqlCmd.CommandTimeout = 0

    $SqlConnection.Open()

    if ($SqlConnection.State -eq 'Open')
{
$message = "SQL Connection established"
$message | out-file {filepath}:\{filepath}\{filename} -append
###SQL statements go here


$sql = "{large, complex SQL query here}"

$adapter = new-object system.data.sqlclient.sqldataadapter ($sql, $SqlConnection)

$adapter.Fill($table) 


$table |ConvertTo-CSV -delimiter "`t" -NoTypeInformation|  %{$_.Replace('"','')} | out-file {filepath}:\{filepath}\{filename}



$SqlConnection.Close();

`

0 个答案:

没有答案