Я получаю сообщение о файле Powershell, который SQLing SQL DB.Запрос работал около 1,5 лет, и я предполагаю, что он начал работать по таймауту, потому что набор данных, который он извлекает как часть запроса, экспоненциально вырос за это время.Я получаю сообщение об ошибке:
Истекло время выполнения.Период ожидания истек до завершения операции, или сервер не отвечает.
Однако при добавлении $ SqlCmd.CommandTimeout = 0 в запрос, как показано ниже, время ожидания истекает после того же самогоколичество времени.Параметр удаленного запроса в SQL по умолчанию составляет 600 секунд.Казалось бы, что на уровне сети существует проблема / разрешение, которое не позволяет информации в этом запросе определять время ожидания.Я также добавил бесконечный тайм-аут в запрос SQL в случае, если была БД 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();
`