Как мы можем выполнить пакет SSIS из хранимой процедуры?Выполнение пакета SSIS из SSMS SQL Server
Я попытался установить пакет ssis. Есть ли способ запустить пакет ssis из хранимой процедуры без планирования, а не через работу?
Как мы можем выполнить пакет SSIS из хранимой процедуры?Выполнение пакета SSIS из SSMS SQL Server
Я попытался установить пакет ssis. Есть ли способ запустить пакет ssis из хранимой процедуры без планирования, а не через работу?
Используйте нижеследующее. Я не знаю, какую версию вы используете, но вы должны понять это.
exec master.dbo.xp_cmdshell '""C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\dtexec.exe" /F "location of your SSIS package"
Если у вас есть SQL Server 2012, и вы используете модель развертывания проекта, очень легко запустить пакеты SSIS с помощью хранимой процедуры.
Вот один мой (упрощенный), чтобы показать вам, как это делается:
-- SET THESE VARIABLES YOURSELF (OPTIONAL IF YOU USE ENVIRONMENTS)
DECLARE @environment AS NVARCHAR(100);
-- DON'T SET THESE
DECLARE @execution_id AS BIGINT;
DECLARE @packageName AS NVARCHAR(128);
DECLARE @projectName AS NVARCHAR(128);
DECLARE @folderName AS NVARCHAR(128);
DECLARE @refID AS BIGINT
SELECT
@packageName = pck.name
, @projectName = p.name
, @folderName = f.name
, @refID = r.reference_id
FROM [SSISDB].[catalog].[packages] pck
INNER JOIN [SSISDB].[catalog].[projects] p
ON pck.project_id = p.project_id
INNER JOIN [SSISDB].[catalog].[folders] f
ON p.folder_id = f.folder_id
INNER JOIN [SSISDB].[catalog].[environment_references] r
ON p.project_id = r. project_id
WHERE
pck.[name] = 'ENTER THE NAME OF YOUR PACKAGE HERE'
-- BELOW IS OPTIONAL IF YOU USE ENVIRONMENTS
AND r.environment_name = @environment;
-- CREATE YOUR EXECUTION (DOESN'T START IT, THINK OF IT LIKE A PLACEHOLDER)
EXEC [SSISDB].[catalog].[create_execution]
@package_name = @packageName,
@execution_id = @execution_id OUTPUT,
@folder_name = @folderName,
@project_name = @projectName,
@use32bitruntime = False,
@reference_id = @refID;
-- WHAT DO YOU WANT YOUR LOGGING LEVEL TO BE?
DECLARE @var0 SMALLINT = 1; --Basic
-- NEED TO SET ALL YOUR PARAMETERS HERE (INCLUDING LOGGING LEVEL)
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50
, @parameter_name = N'LOGGING_LEVEL', @parameter_value = @var0; -- BASIC
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30
, @parameter_name = N'YOUR CUSTOM PACKAGE PARAM', @parameter_value = 'YOUR CUSTOM VALUE';
-- YOU GOOD TO GO? START IT
EXEC [SSISDB].[catalog].[start_execution] @execution_id = @execution_id;
Какая версия SQL Server вы используете? Есть ли причина, по которой вы не хотите использовать эту работу? – GarethD
С SQL Server 2012, развернутые пакеты могут быть вызваны из SP. –