Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запуск dtsx-пакета с помощью xp_cmdshell  [new]
OKoryagina
Member

Откуда:
Сообщений: 4
Добрый день!

Пытаюсь организовать загрузку данных в базу со стороннего сервера.
Создала DTSX-пакет.
Если запускаю пакет вручную из файловой системы данные грузятся.
Если пытаюсь запустить тот же пакет с помощью выходит ошибка.

Прошу совета как организовать загрузку данных.

Как пытаюсь сделать:

Запуск пакета:

DECLARE @returncode int
EXEC @returncode = xp_cmdshell 'dtexec /f "C:\Projects\MOHSPP\MOHSPP\MOHSPP\Package.dtsx"'
select @returncode

Сообщение об ошибке:

Microsoft (R) SQL Server Execute Package Utility
Version 10.0.6000.29 for 64-bit
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.
NULL
Started: 9:07:33
Error: 2017-12-05 09:07:38.11
Code: 0xC0016016
Source:
Description: Failed to decrypt protected XML node "PassWord" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the
correct key is available.
End Error
Progress: 2017-12-05 09:07:40.70
Source: MOHSPP
Validating: 0% complete
End Progress
Error: 2017-12-05 09:07:42.30
Code: 0xC0047062
Source: MOHSPP SAP BI Source [1]
Description: System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at Microsoft.SqlServer.Dts.SapBw.Connectivity.RFCAPI.RfcOpenEx(String conn_param, RFC_ERROR_INFO_EX& error_info)
at Microsoft.SqlServer.Dts.SapBw.Connectivity.R3Connection.Open(String ConnectionString)
at Microsoft.SqlServer.Dts.SapBw.ConnectionManager.SapBwConnectionManager.AcquireConnection(Object txn)
at Microsoft.SqlServer.Dts.Runtime.ConnectionManager.AcquireConnection(Object txn)
at Microsoft.SqlServer.Dts.SapBw.Components.SapBwPipelineComponent.AcquireConnections(Object transaction)
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostAcquireConnections(IDTSManagedComponentWrapper100 wrapper, Object transaction)
End Error
Error: 2017-12-05 09:07:42.33
Code: 0xC0047017
Source: MOHSPP SSIS.Pipeline
Description: component "SAP BI Source" (1) failed validation and returned error code 0x8007000B.
End Error
Progress: 2017-12-05 09:07:42.33
Source: MOHSPP
Validating: 50% complete
End Progress
Error: 2017-12-05 09:07:42.33
Code: 0xC004700C
Source: MOHSPP SSIS.Pipeline
Description: One or more component failed validation.
End Error
Error: 2017-12-05 09:07:42.35
Code: 0xC0024107
Source: MOHSPP
Description: There were errors during task validation.
End Error
DTExec: The package execution returned DTSER_FAILURE (1).
Started: 9:07:33
Finished: 9:07:42
Elapsed: 8.767 seconds
NULL

Параметры сервера:

MS SQL server 2008
Microsoft SQL Server Management Studio 10.0.6535.0
Microsoft Analysis Services Client Tools 10.0.6000.29
Microsoft Data Access Components (MDAC) 6.1.7601.17514
Microsoft MSXML 3.0 6.0
Microsoft Internet Explorer 9.10.9200.16576
Microsoft .NET Framework 2.0.50727.8762
Operating System 6.1.7601

WINDOWS Server 2008 R2 Enterprise SP1
5 дек 17, 09:37    [21006165]     Ответить | Цитировать Сообщить модератору
 Re: Запуск dtsx-пакета с помощью xp_cmdshell  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
в ошибке же всё написано, почему он не запускается.
5 дек 17, 09:52    [21006215]     Ответить | Цитировать Сообщить модератору
 Re: Запуск dtsx-пакета с помощью xp_cmdshell  [new]
OKoryagina
Member

Откуда:
Сообщений: 4
Возможно, неверно сформулировала свой вопрос.
Как избежать ошибки?
5 дек 17, 11:24    [21006591]     Ответить | Цитировать Сообщить модератору
 Re: Запуск dtsx-пакета с помощью xp_cmdshell  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 776
OKoryagina,

Очевидно, правильно настроить декодирование...
5 дек 17, 11:33    [21006642]     Ответить | Цитировать Сообщить модератору
 Re: Запуск dtsx-пакета с помощью xp_cmdshell  [new]
Владислав Колосов
Member

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

автор
One or more component failed validation.


Ремонтируйте или пакет или базу. Объекты базы не соответствуют ожиданиям пакета.
5 дек 17, 11:36    [21006655]     Ответить | Цитировать Сообщить модератору
 Re: Запуск dtsx-пакета с помощью xp_cmdshell  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 553
OKoryagina,

Вот это
Error: 2017-12-05 09:07:38.11
Code: 0xC0016016
Source:
Description: Failed to decrypt protected XML node "PassWord" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the
correct key is available.

укзаывает, что пароли подключения указаны в Connection Manager и зашифрованы SSIS - стандартная практика. Когда вы запускаете пакет под собой, пароли расшифровыываются нормально, под другим пользователем - будет ошибка. Подробности - см документацию MS.

Варианты решения:
  • Если у вас SSIS 2012 и выше - используйте проекты SSIS, Connection Manager проекта и при деплое проекта - задавайте environment, где хранится пароль. Самое корректное решение, пароль может вводить специально уполномоченный человек и сам пароль шифруется.
  • Установить параметр сохранения паролей в пакете Protection Level = EncryptSensitiveWithPassword и указать пароль шифрования. Далее, при запуске пакета этот пароль придется указывать.

    Следующие ошибки - растут из невозможности подключения.
  • 5 дек 17, 11:48    [21006704]     Ответить | Цитировать Сообщить модератору
     Re: Запуск dtsx-пакета с помощью xp_cmdshell  [new]
    OKoryagina
    Member

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

    Спасибо за ответ, правильно ли понимаю, что пароль необходимо вводить врукопашную?
    Цель - организовать загрузку данных без участия человека.

    На сервере развернута
    Microsoft Visual Studio 2008
    Version 9.0.30729.1 SP
    Microsoft .NET Framework
    Version 3.5 SP1
    5 дек 17, 13:51    [21007236]     Ответить | Цитировать Сообщить модератору
     Re: Запуск dtsx-пакета с помощью xp_cmdshell  [new]
    Ferdipux
    Member

    Откуда: Москва
    Сообщений: 553
    OKoryagina,

    Если Visual Studio 2008, можно предположить что и сам сервер 2008. Хотя не факт.
    Если сервер "старый" (2008 и ранее) и вы запускаете пакет из файла - то у вас 2 пути. Шифровать пакет с паролем и скармливать пароль при запуске dtexec с параметром /Decrypt <password>. Или - при запуске - подставлять новый ConnectionString, в которой указывать пароль - параметром /Connection и строкой подключения.
    Смотрите справку по dtexec за подробностями.
    5 дек 17, 14:03    [21007294]     Ответить | Цитировать Сообщить модератору
     Re: Запуск dtsx-пакета с помощью xp_cmdshell  [new]
    OKoryagina
    Member

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

    Спасибо, буду пробовать.
    Сервер действительно 2008-й.
    5 дек 17, 14:13    [21007330]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить