Использовать интегрированный сервисный пакет в Sql Server

Я использую мастер импорта / экспорта SQL Server для импорта данных из файла Excel в таблицу. Мне нужно будет выполнить этот точный импорт много раз, поэтому я выбрал вариант «Сохранить пакет SSIS». Я попытался сохранить на SQL Server, и я попытался сохранить в файловой системе. В любом случае я не могу понять, как использовать пакет в SQL Server. Я читал, что мне нужно использовать задачу агента для этого, но я не могу найти этого нигде в программе SQL Server. Я также искал интегрированные службы в SQL Server и нашел значок, который, похоже, ничего не делает.

Как мне перейти от наличия .dtsx где-нибудь на моем компьютере к выполнению импорта (желательно в запросе) без необходимости повторять весь процесс мастера снова и снова?

Спасибо


person Addie    schedule 27.05.2014    source источник
comment
Какую версию SQL-сервера вы используете? У вас есть исполняемый файл DTExec.exe в C: \ Program Files \ Microsoft SQL Server \ XXX \ DTS \ Binn?   -  person TMNT2014    schedule 27.05.2014
comment
SQL Server 2008. Я работаю в SQL Server Management Studio. Не удалось найти файл DTExec.exe.   -  person Addie    schedule 27.05.2014
comment
Проверьте, помогает ли какое-либо из этих решений. stackoverflow.com/questions/888709/   -  person TMNT2014    schedule 27.05.2014


Ответы (1)


Мастер импорта / экспорта создает файл с именем .DTSX. Это ваш пакет SSIS. Пакет SSIS - это текстовый файл, заполненный набором XML. Сравните это с тем, что заканчивается на .EXE / .COM, который является исполняемым файлом, который сможет запустить любая машина с Windows.

Нам нужно что-то, чтобы использовать этот файл .dtsx и выполнять описанные в нем операции ETL. Вам доступны три варианта: dtexec.exe, dtexecui.exe, и пользовательский код .NET. dtexecui - это просто графическая оболочка для командной строки, поэтому на самом деле ваш выбор для запуска пакетов - это предварительно созданная утилита командной строки или пользовательский код. Запустить пакет через dtexec можно так же просто, как dtexec.exe /file C:\MyPackage.dtsx

Поскольку вы хотите запустить это из контекста SSMS, вам нужно будет либо создать задание агента SQL, либо создать хранимую процедуру, которая вызывает dtexec. Поскольку вы новичок в этом бизнесе, вакансия обеспечит самый низкий входной барьер.

В SSMS подключитесь к экземпляру и перейдите в нижнюю часть. Вы должны увидеть «Агент SQL Server». Разверните этот узел, щелкните правой кнопкой мыши «Задания» и выберите «Новое задание». На вкладке «Шаги» нажмите «Создать» .... Измените тип на «Пакет служб интеграции SQL Server». введите здесь описание изображения.  Выберите источник (файловая система или SQL Server). Введите имя сервера или место, где находится пакет, и все готово.

Вам необходимо знать одну очень важную вещь: драйверы Excel будут работать только в 32-битном режиме. Это означает, что вам нужно будет использовать dtexec.exe, который существует в C:\Program Files (x86)\Microsoft SQL Server\XXX\DTS\Binn\dtexec.exe. Чтобы получить такое поведение из задания SQL Agent, вам нужно будет добавить параметр / X86 в командную строку, например

введите описание изображения здесь

Флаг x86 работает только для вызовов заданий агента SQL. Из командной строки вы должны использовать правильную версию dtexec.exe.

person billinkc    schedule 27.05.2014
comment
Большое спасибо за подробный ответ. - person Addie; 27.05.2014