Как установить время ожидания скрипта SQL Server из скрипта? - PullRequest
9 голосов
/ 22 октября 2008

У меня есть большой файл сценария (почти 300 МБ и, возможно, больше в будущем), который я пытаюсь запустить. В комментариях Гульзара на мой вопрос об этом было предложено изменить тайм-аут сценария на 0 (без тайм-аута).

Каков наилучший способ установить это время ожидания в скрипте? На данный момент у меня есть все это в верхней части файла скрипта в надежде, что один из них что-то сделает:

sp_configure 'remote login timeout', 600
go
sp_configure 'remote query timeout', 0
go
sp_configure 'query wait', 0
go
reconfigure with override
go

Тем не менее, я все еще получаю тот же результат, и я не могу сказать, удается ли мне установить время ожидания, потому что ответ от sqlcmd.exe - наименее полезное сообщение об ошибке в мире:

Sqlcmd: Ошибка: ошибка сценария.

Спасибо.

Ответы [ 3 ]

7 голосов
/ 20 марта 2009

Ваше решение - добавить GO каждые 100 или 150 строк

http://www.red -gate.com / ОБЪЯВЛЕНИЯ / viewtopic.php? Т = 8109

5 голосов
/ 22 октября 2008
sqlcmd -t {n}

Где {n} должно быть числом от 0 до 65535.

Обратите внимание, что ваш вопрос немного вводит в заблуждение, поскольку сервер не имеет понятия времени ожидания , и поэтому вы не можете установить время ожидания в своем сценарии.

В вашем контексте время ожидания устанавливается sqlcmd

4 голосов
/ 22 октября 2008

Я думаю, что не существует концепции времени ожидания в сценарии SQL на SQL Server. Вы должны установить время ожидания в вызывающем слое / клиенте.

Согласно этой статье MSDN вы можете попытаться увеличить время ожидания следующим образом:

exec sp_configure 'remote query timeout', 0 
go 
reconfigure with override 
go 

"Используйте опцию тайм-аута удаленного запроса, чтобы указать, сколько времени (в секундах) может занимать удаленная операция до истечения времени ожидания Microsoft SQL Server. Значение по умолчанию 600, что позволяет 10-минутное ожидание. Это значение применяется к исходящее соединение, инициированное компонентом Database Engine как удаленный запрос. Это значение не влияет на запросы, полученные компонентом Database Engine. "

P.S .: Под 300 МБ вы подразумеваете, что результирующий файл равен 300 МБ? Я не надеюсь, что сам файл сценария составляет 300 МБ. Это был бы мировой рекорд. ; -)

...