none
PoSh - System.Data.SqlClient - вылет скрипта по таймауту RRS feed

  • Вопрос

  • Добрый день столкнулся с такой проблемой...

    есть скрипт который бекапит sql базу

    param (
    [string]$server = "serv",				
    [string]$base = "base",	
    [string]$target = "\\target\target\",
    )			
    $backup_file_path = $target + $base + "." + ".bak"
    $backup_file_zip = $target + $base + "." + ".bak.zip"
    $Query = "BACKUP DATABASE [$base] TO DISK = N'$backup_file_path' WITH NOFORMAT, NOINIT,
    NAME = N'Автоматическая резервная копия $base',SKIP, NOREWIND, NOUNLOAD, STATS = 10" }
    $SQLConnection = new-object System.Data.SqlClient.SqlConnection("Initial Catalog=$base;Data Source=$server;Integrated Security=SSPI;")
    $SQLConnection.Open()
    $SQLCommand = New-Object System.Data.SqlClient.SqlCommand($Query, $SQLConnection)
    $SQLCommand.ExecuteNonQuery()
    $SQLConnection.Close()
    

    при выполнение скрипта появляется ошибка

    Exception calling "ExecuteNonQuery" with "0" argument(s): "Timeout expired.

    The timeout period elapsed prior to completion of the operation or the server is not responding."At :line:44 char:27

    + $SQLCommand.ExecuteNonQuery <<<< ()

    при этом если SQL база не большая, меньше одного гига, то всё проходит без ошибок, если база в районе гига, то ошибка то есть, то нет!

    Зато если запускать скрипт на рабочих базах (от 40г до 120г) ошибка появляется всегда...

    пробывал в конекшенсринг писать конекшен таймаут равный 10000, не помогает...

    Уважаемые если кто вкурсе в чём дело, подскажите пути решения, заранее спасибо

    эээ...
    • Изменено OlegKrikun 14 апреля 2009 г. 12:49 форматирование
    14 апреля 2009 г. 12:47

Ответы

Все ответы


  • пробывал в конекшенсринг писать конекшен таймаут равный 10000, не помогает...


    Это пробовали? $objConnection.Set_ConnectionTimeout($timeout)

    А если $timeout "0" поставить?

    14 апреля 2009 г. 13:38
  • А если так: SqlCommand.CommandTimeout

    $sqlCommand = New-Object System.Data.SqlClient.SqlCommand($Query, $SQLConnection)
    $sqlCommand.CommandTimeout = ...
    • Помечено в качестве ответа OlegKrikun 15 апреля 2009 г. 6:47
    14 апреля 2009 г. 14:10
  • спасибо большое, со значение 0 замечательно отработало, засеку время на самой большой базе и выставлю реальную цифру =) ещё раз спасибо
    эээ...
    15 апреля 2009 г. 6:49