2009-05-28 10 views
8

У меня есть пакет SSIS, который хранится в базе данных SQL Server 2005. Я пытаюсь выполнить этот пакет из хранимой процедуры на том же сервере. Есть ли лучший способ, чем ехес master..xp_cmdshell «DTExec/SQL ...Выполнение пакета SSIS SQL Server из хранимой процедуры

Я бег в (я думаю) вопросы разрешения файловой системы с xp_cmdshell, что препятствует выполнению

ответ

4

Я рекомендую использовать агента вместо:

  1. Создание учетной записи-посредника агента для учетной записи, которая будет выполняться задание
  2. Создать задание агента, который работает этот пакет
  3. Сделать это использовать прокси-аккаунт, созданный в # 1
  4. Проверьте работу
  5. В SQL код, используйте sp_start_job, чтобы начать эту работу

Недостатком является то, что вы не можете легко передать параметры из SQL в пакет таким образом.

+1

Я недавно пришел с подробным решением, основанным на этой идее, для всех, кто нуждается в пример через [*** этот StackOverflow вопрос ***] (http://stackoverflow.com/questions/27535338/execute-ssis-package-from-stored-procedure-as-proxy-user-without-xp-cmdshell) –

0

С 2012 года MSSQL имеет каталог SSIS, в котором вы можете оставить свои пакеты там. Затем вы можете выполнить пакет с параметрами. Таким образом, мы можем избежать xp_cmdshell, чтобы позвонить dtexec, или sp_start_job без параметров. Ключевые СП: create_execution, set_execution_parameter_value и start_execution.

Из MSDN:

To run a package on the server using SQL Server Management Studio

Deploy and Execute SSIS Packages using Stored Procedures

Смежные вопросы