exited

У меня проблема с зависанием при использовании xp_cmdshell.

  1. Исполняемый файл вызывается, выполняет свою работу и завершает работу. Он не зависает из-за подсказки пользовательского интерфейса в exe. Экзешник вообще не виснет. Исполняемый файл исчезает из списка процессов в диспетчере задач, и внутренняя регистрация из исполняемого файла подтверждает, что он выполнил самую последнюю строку в основной функции

  2. , вызов xp_cmdshell НЕ возвращает управление в SQL. Он висит на этой строке (это последняя строка пакета). Убивать процесс неэффективно. На самом деле требуется перезапуск сервера sql, чтобы избавиться от зависшего процесса (тьфу)

  3. Зависание происходит только при первом запуске. Последующие вызовы процедуры с идентичными параметрами работают и корректно завершаются до тех пор, пока зависает первый.После перезапуска SQL первый последующий вызов снова зависнет.

  4. Если это имеет значение, я пытаюсь получить возвращаемое значение от exe -- моя процедура sql заканчивается:

    exec @i = xp_cmdshell @cmd; вернуть @i;

  5. Монитор активности сообщает, что процесс завис в режиме ожидания PREEMPTIVE_OS_PROCESSOPS (то, что видел другой разработчик) или PREEMPTIVE_OS_PIPEOPS (то, что я вижу в своем текущем тестировании)

Есть идеи?

6
задан Clyde 8 March 2012 в 15:53
поделиться