Если вы используете Invoke-Sqlcmd
из модуля SqlServer , доступного в галерее PowerShell, вы сможете указать параметр -QueryTimeout
, который позволяет указать время ожидания до 65535 секунд (~ 18 часов).Я не уверен, когда это было добавлено, но я знаю, что оно отсутствует в модуле / оснастке SQLPS из SQL Server 2008 R2.
Если это не сработает, вам нужно будет написать собственную версиюиспользуя класс .Net SqlClient.Проблема в том, что он не понимает GO
пакетный разделитель, поскольку это не T-SQL.
Имейте в виду, что сама база данных может иметь свой собственный тайм-аут запроса.
Кроме того, если вы просто хотите подождать 10 минут, этого действительно достаточно:
Invoke-Sqlcmd ...
Start-Sleep -Seconds 600
Invoke-Sqlcmd ...
Наконец, если вы тестируете производительность, имейте в виду, что этот тип теста будетимеют чрезвычайно переменные результаты.Если вашему SQL Server не нужно было использовать память, вполне вероятно, что ваш запрос будет оставаться в пуле кэша в течение 10 минут (или намного дольше).
Например, если вы пытаетесь определить производительность холодного запроса, это не лучший метод.Вам нужно использовать команды DBCC, чтобы заставить сервер игнорировать свой собственный кеш или сделать его недействительным.Я прочитал бы этот вопрос , а также два связанных вопроса в принятом ответе.В частности, я бы согласился с оценкой, что производительность холодных запросов не должна быть такой большой, поскольку, по определению, она выполняется не очень часто.