У меня есть пакет служб SSIS, который общается с удаленным сервером по HTTP. Я выполняю пакет служб SSIS с помощью хранимой процедуры в моей базе данных (SQL Server 2012), которая вызывается с веб-сервера. Веб-сервер подключается к базе данных с помощью аутентификации Windows. Теперь мне нужно запустить хранимую процедуру (и, следовательно, пакет служб SSIS) с клиента, который не поддерживает проверку подлинности Windows. Пакет служб SSIS достаточно сложен, поэтому переход на другое решение невозможен.
В пакете служб SSIS передаются сложные переменные. Хранимая процедура, которая запускает пакет, выглядит примерно так:
CREATE PROCEDURE [dbo].[SSISPackage]
@Parameter1 XML
AS
BEGIN
SET NOCOUNT ON;
DECLARE @execution_id BIGINT
EXEC [SSISDB].[catalog].[create_execution]
@package_name=N'Package.dtsx',
@execution_id=@execution_id OUTPUT,
@folder_name=N'API',
@project_name=N'APIProject',
@use32bitruntime=False,
@reference_id=Null
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
@execution_id,
@object_type=30,
@parameter_name=N'Parameter1',
@parameter_value=@Parameter1
EXEC [SSISDB].[catalog].[start_execution] @execution_id
END
Из того, что я читал, невозможно запускать пакеты служб SSIS с пользователями, аутентифицированными с использованием аутентификации SQL Server.
Мои вопросы:
- Можно ли как-то повысить привилегию пользователя SQL до пользователя Windows-auth, а затем выполнить хранимую процедуру.
- Существуют ли типичные подходы к решению этой проблемы (например, CLR, таблица очередей, вызов командной строки для пакета)?