Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Поясните плиз..
MS SQL 2012 + SSIS
Пытаюсь запустить SSIS пакет.
eclare @execution_id bigint

 exec ssisdb.catalog.create_execution 

 @folder_name ,@project_name ,@package_name ,@execution_id = @execution_id output

 exec ssisdb.catalog.start_execution @execution_id

 set @output_execution_id = @execution_id

--
Под доменной учеткой с соотв. правами - все нормально.
Под sql-ной - выдает ошибку
"Учетная запись, использующая проверку подлинности SQL Server, не может запускать операцию.
Запустите операцию с учетной записью, использующей проверку подлинности Windows."

Права у "недоменной учетки" тоже все есть.
Что не хватает?
29 июл 14, 17:16    [16372476]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
попробуй посмотреть что выдаёт
declare @execution_id bigint

 
 @folder_name ,@project_name ,@package_name ,@execution_id = @execution_id output

 exec ssisdb.internal.start_execution_internal


 set @output_execution_id = @execution_id
29 июл 14, 17:32    [16372580]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
EvAlex
попробуй посмотреть что выдаёт
declare @execution_id bigint 
 @folder_name ,@project_name ,@package_name ,@execution_id = @execution_id output
 exec ssisdb.internal.start_execution_internal
 set @output_execution_id = @execution_id

Не понял, как соотносятся в этом скрипте переменные и хранимка..
Для самой хранимки должны быть заданы параметры
@project_id [bigint], @execution_id [bigint], @version_id [bigint], @use32BitRuntime [smallint]
30 июл 14, 11:10    [16375446]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Вдогонку.
Попробовал так
declare @out bigint;
exec ssisdb.catalog.create_execution 
 @folder_name = 'SSIS-MR3'
 ,@project_name = 'SSIS-MR3-SelfCost'
 ,@package_name = 'TestSSASProcessing.dtsx', 
 @execution_id =@out output;
print @out
 exec ssisdb.internal.start_execution_internal  @project_id=7,	@execution_id =@out,	@version_id =22,	@use32BitRuntime =0

По прежнему из под sql-ной учетки ошибка:
Учетная запись, использующая проверку подлинности SQL Server, не может запускать операцию. Запустите операцию с учетной записью, использующей проверку подлинности Windows.
30 июл 14, 11:26    [16375620]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
McCar,

гм. по-моему, из ошибки все ясно должно быть. эту процедуру просто нельзя запускать из под sql-ной учетки. вообще.
можете в текст процедуры заглянуть - там это в самом начале проверяется:
        IF(  
            EXISTS(SELECT [name]  
                    FROM sys.server_principals  
                    WHERE [sid] = @suser_sid AND [type] = 'S')    
            OR  
            EXISTS(SELECT [name]  
                    FROM sys.database_principals  
                    WHERE ([sid] = @caller_sid AND [type] = 'S'))   
            )  
        BEGIN  
            RAISERROR(27123, 16, 1) WITH NOWAIT  
            RETURN 1  
        END
30 июл 14, 12:24    [16376257]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
McCar
EvAlex
попробуй посмотреть что выдаёт
declare @execution_id bigint 
 @folder_name ,@project_name ,@package_name ,@execution_id = @execution_id output
 exec ssisdb.internal.start_execution_internal
 set @output_execution_id = @execution_id

Не понял, как соотносятся в этом скрипте переменные и хранимка..
Для самой хранимки должны быть заданы параметры
@project_id [bigint], @execution_id [bigint], @version_id [bigint], @use32BitRuntime [smallint]


это внутренняя хранимка, которая и запускает пакет, уже после проверки прав.
Возможно ошибка будет более подробной.
Я поленился сопоставить переменные.
30 июл 14, 14:00    [16376968]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
daw
McCar,

гм. по-моему, из ошибки все ясно должно быть. эту процедуру просто нельзя запускать из под sql-ной учетки. вообще.

ну.. я думал может какой workaround есть, тут придется много лишних телодвижений делать, чтобы отдельную учетку для запуска ssis пакетов создавать с нужными правами.
30 июл 14, 15:50    [16377738]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
McCar
ну.. я думал может какой workaround есть, тут придется много лишних телодвижений делать, чтобы отдельную учетку для запуска ssis пакетов создавать с нужными правами.


так, EvAlex уже написал: внутрь заглянуть и попробовать выполнить то, что там после проверки типа учетки идет. только вот, есть подозрение, что не зря там эта проверка стоит.
30 июл 14, 16:10    [16377858]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Дык я же написал, - выполнил я эту внутренн. CLR процедуру, - там тоже аналогичная ошибка.
Хачить CLR сборку я уж не стал. :-)
30 июл 14, 16:31    [16377994]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
я бы построил exec catalog.create_execution2 c WITH EXECUTE AS 'domain\user',
которая вызывает ssisdb.catalog.create_execution
31 июл 14, 10:34    [16380394]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
EvAlex
я бы построил exec catalog.create_execution2 c WITH EXECUTE AS 'domain\user',
которая вызывает ssisdb.catalog.create_execution

Прошу прощения за вопрос.. видимо из категории RTFM, но что еще для этого нужно дополнительно прописать?
После того, как я прописал в хранимке " WITH EXECUTE AS 'DOM\sql-ua-orders-ware'", вызов этой хранимки приводит к ошибке
-"Серверу-участнику "DOM\sql-ua-orders-ware" не удалось обратиться к базе данных "SSISDB" в текущем контексте безопасности."
Где то ведь должен быть наверно прописан доменный пароль для этой учетки? Где?
4 авг 14, 15:18    [16396408]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
Glory
Member

Откуда:
Сообщений: 104751
McCar
Где то ведь должен быть наверно прописан доменный пароль для этой учетки? Где?

Известно где - на контроллере домена.
Только причем здесь пароль ?
4 авг 14, 15:24    [16396450]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Glory
McCar
Где то ведь должен быть наверно прописан доменный пароль для этой учетки? Где?

Известно где - на контроллере домена.
Только причем здесь пароль ?

Я хочу, чтобы хранимка выполнялась из под другого пользователя.
Если я делаю это через пользовательский интерфейс, я, допустим запускаю SSMS через "Запуск от имени другого пользователя.." и система спрашивает меня имя этого пользователя и пароль.
И тут я хочу тоже самое, но прописанное уже в хранимке..
4 авг 14, 16:09    [16396823]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
Glory
Member

Откуда:
Сообщений: 104751
McCar
я, допустим запускаю SSMS через "Запуск от имени другого пользователя.." и система спрашивает меня имя этого пользователя и пароль.

Какое отношение запуск exe файла в windows имеет mssql ?

McCar
И тут я хочу тоже самое, но прописанное уже в хранимке..

MSSQL запрашивает пароль только при соединении. И то только для sql логинов
А про то, как работает EXECUTE AS надо читать в хелпе
4 авг 14, 16:19    [16396904]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Glory
McCar
я, допустим запускаю SSMS через "Запуск от имени другого пользователя.." и система спрашивает меня имя этого пользователя и пароль.

Какое отношение запуск exe файла в windows имеет mssql ?

Насколько я понимаю, здесь идет речь о запуске внутри хранимой процедуры некой CLR сборки, и в она может выполняться в контексте именно доменного пользователя, и так как execute as clause переключает датабазный контекст, при вызове функции из CLR сборки я получаю ошибку:
Серверу-участнику "DOM\sql-ua-orders-ware" не удалось обратиться к базе данных "SSISDB" в текущем контексте безопасности.
Glory
А про то, как работает EXECUTE AS надо читать в хелпе

Собственно речь и шла о том, чтобы с помощью нашего сообщества минимизировать время, которое требуется на чтение мануала..
Какую тему "курить" - подскажите пожалуйста..
Сredential?Proxy Accounts ?Или проще из хранимки SQL agent Job дернуть?
--
Прошу с пониманием отнестись к сумбурности моих вопросов, - я вопросов администрирования MS SQL касаюсь достаточно редко.
5 авг 14, 16:25    [16402265]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8823
Сам пакет опубликован к каталоге служб? Просто создайте джоб с этим пакетом и выполните его.
5 авг 14, 17:18    [16402610]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8823
McCar,

автор
Под доменной учеткой с соотв. правами - все нормально.

Это чем не устраивает?
5 авг 14, 17:20    [16402618]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
Glory
Member

Откуда:
Сообщений: 104751
McCar
Насколько я понимаю, здесь идет речь о запуске внутри хранимой процедуры некой CLR сборки, и в она может выполняться в контексте именно доменного пользователя, и так как execute as clause переключает датабазный контекст, при вызове функции из CLR сборки я получаю ошибку:
Серверу-участнику "DOM\sql-ua-orders-ware" не удалось обратиться к базе данных "SSISDB" в текущем контексте безопасности.

Какая еще CLR ? Вы о чем ?

McCar
Какую тему "курить" - подскажите пожалуйста..
Сredential?Proxy Accounts ?Или проще из хранимки SQL agent Job дернуть?
--

Наверное тему EXECUTE AS, раз уж вы захотели использовать именно ее
5 авг 14, 17:24    [16402635]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Владислав Колосов
McCar,

автор
Под доменной учеткой с соотв. правами - все нормально.

Это чем не устраивает?

Тем, что мой коллега, который пишет на дельфях код для вызова хранимой процедуры, утверждает, что он не может в строке подключения указать доменного пользователя..
5 авг 14, 17:52    [16402786]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
печаль
Guest
К несчастью лично он наверное и неможет, но пофакту это возможно, посмотрите сами строку соединения и все настройки компонента ADOConnection и AdostorerProcedure, в данной ситуации разумнее Вашему коллеге идти на соответствующий форум по Delphi
5 авг 14, 18:04    [16402839]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Glory
McCar
Насколько я понимаю, здесь идет речь о запуске внутри хранимой процедуры некой CLR сборки, и в она может выполняться в контексте именно доменного пользователя, и так как execute as clause переключает датабазный контекст, при вызове функции из CLR сборки я получаю ошибку:
Серверу-участнику "DOM\sql-ua-orders-ware" не удалось обратиться к базе данных "SSISDB" в текущем контексте безопасности.

Какая еще CLR ? Вы о чем ?

Допускаю что это мое предположение неуместно..
Я решил, что хранимая процедура [internal].[start_execution_internal] является функцией из CLR сборки.

Еще раз, задача - запускать SSIS пакет из дельфевого кода "по кнопке".
Как это делать - через вызов Job-а SQL агента или через хранимку, неважно.
5 авг 14, 18:08    [16402847]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8823
McCar, конкретного пользователя не может, доверительный коннект производится в контексте текущего пользователя Windows. А текущий не может выполнить пакет, как я понимаю.
Создайте джоб, который будет чекать таблицу, а в таблицу Ваш коллега путь выставляет нужный бит запуска. Чекать можно каждые 10 секунд, для пакета этого более, чем достаточно.
5 авг 14, 18:09    [16402851]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Владислав Колосов
McCar, конкретного пользователя не может, доверительный коннект производится в контексте текущего пользователя Windows. А текущий не может выполнить пакет, как я понимаю.
Создайте джоб, который будет чекать таблицу, а в таблицу Ваш коллега путь выставляет нужный бит запуска. Чекать можно каждые 10 секунд, для пакета этого более, чем достаточно.

Ну так то да.. но.. мне одному кажется, что к этому workaroud - у применимо наше выражение "через жопу"?
5 авг 14, 18:19    [16402878]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
McCar
что к этому workaroud ..

Сорри, никак не привыкну к том, что на нашем форуме нет редактирования сообщений..
"workaround - y" я хотел написать.
5 авг 14, 18:21    [16402882]     Ответить | Цитировать Сообщить модератору
 Re: Запуск SSIS пакета через команду ssisdb.catalog.start_execution под не доменной учеткой  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Наверно напрасно я уперся в эту идею с запуском SSIS пакета напрямую из хранимки.
Вопрос был простым скриптом
use msdb;
EXEC dbo.sp_start_job N'self-cost' ;
5 авг 14, 19:25    [16403052]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить