2012-02-02 3 views
1

Мое приложение фактически вызывает хранимую процедуру, которая вызывает вызов пакета и выполняет его. В основном мы делаем это с помощью xp_cmdshell и dtexec, но клиент запрещает использовать xm_cmdshell.Is существует какой-либо другой способ сделать это?вызов sys-пакета из хранимой процедуры без использования xp_cmdshell

Пожалуйста, помогите.

+0

SQL 2012 предоставляет процедуры для запуска пакетов изначально [catalog.create_execution] (http://msdn.microsoft.com/en-us/library/ff878160 (v = sql.110) .aspx) и [catalog.start_execution] (http://msdn.microsoft.com/en-us/library/ff878160(v=sql.110).aspx) – billinkc

+0

Проблема в том, что приложение и пакет повторяются на том же сервере, то есть на сервере приложений. По клиенту мы не разрешено устанавливать сервисы интеграции на сервере приложений. Наш сервер db отличается. Наше приложение выполняет пакет при нажатии кнопки. – Shipu

ответ

1

Этот сценарий составляет discussed в документации SSIS. Другим вариантом будет процедура CLR, которая runs the package, поэтому вместо TSQL/xp_cmdshell вы используете объектную модель CLR/Dts.

1

Вы можете создать задание, которое запускает пакет, а затем использовать sp_start_job для execut этой работы

http://msdn.microsoft.com/en-us/library/ms403355.aspx

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

http://msdn.microsoft.com/en-us/library/ms181153.aspx

+0

, но это создаст проблему в случае одновременных пользователей. Предположим, что один пользователь нажимает кнопку, которая будет вызывать этот sp_startjob. Но если в то же время другой пользователь нажимает на эту кнопку, то он/она не сможет выполнить ее, пока первый не закончит Это. – Shipu

+0

Возможно, вместо запуска существующего задания запустите скрипт, который создает задание, затем вы можете добавить уникальный GUID к заданию и отслеживать его прогресс, а также http://msdn.microsoft.com/en-us/library/ms191450 .aspx – msmucker0527

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