Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
DimaU
Member

Откуда: Москва
Сообщений: 548
Прошу небольшой хэлп.
Есть dtsx-файл, который из csv-файла импортирует данные в таблицу. Это действие периодическое и его надо перевесить на пользователя. Вызов DTExec размещен в батнике.
Вопросы:
1) Можно ли в вызове DTExec установить имя загружаемого csv-файла (имя может быть любым у пользователя). Вроде есть параметр /SET. Нужен пример.
2) У пользователя на компе нет самого SQL Server (management studio). Как понимаю, батник с DTExec у него не отработает? Есть ли какие-то приемы попроще все-таки дать ему возможность работы с таким импортом??? Может у MS есть какое легкое runtime-приложение (с обработкой dtsx-файла). Или остается только написать на VS (с соответствующими расширениями) небольшое приложение отработки импорта и установить пользователю?
26 ноя 19, 19:36    [22026044]     Ответить | Цитировать Сообщить модератору
 Re: Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33644
Блог
DimaU,

Зачем пользователя встраивать в процесс?
Джоб, работающий раз в 5 минут, в котором пакет проверяет наличие файла (по маске) в определенной папке, а потом загружает его. После попытки загрузки тот же пакет перекидывает файл в папку "загружено успешно" или "ошибка загрузки" с отправкой письма об ошибке (или об успехе) ответственному.

А сейчас вы нагружаете пользователя "волшебными" действиями, сути которых он не понимает.
26 ноя 19, 20:01    [22026064]     Ответить | Цитировать Сообщить модератору
 Re: Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
DimaU
1) Вроде есть параметр /SET. Нужен пример.
2) У пользователя на компе нет самого SQL Server (management studio). Как понимаю, батник с DTExec у него не отработает?
1) В доке же есть, см "dtexec Utility". Что за привычка, не открывать документацию.
dtexec /f mypackage.dtsx /set \package.variables[myvariable].Value;myvalue

2) В доке написано: "To install the 32-bit version of the dtexec utility, you must select either Client Tools or SQL Server Data Tools (SSDT) during setup."
Не знаю, можно ли её как то устанавливать совершенно отдельно. Тем более, что нужна не только сама утилита, но и компоненты доступа.
26 ноя 19, 20:48    [22026094]     Ответить | Цитировать Сообщить модератору
 Re: Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Критик
Джоб, работающий раз в 5 минут, в котором пакет проверяет наличие файла (по маске) в определенной папке, а потом загружает его. После попытки загрузки тот же пакет перекидывает файл в папку "загружено успешно" или "ошибка загрузки" с отправкой письма об ошибке (или об успехе) ответственному.
Да, это ИМХО лучше, только папка должна быть на сервере, и у пользователя туда должен быть доступ (ну и, получается, к файлам других людей).
Не знаю, подойдёт ли это ТС.
26 ноя 19, 20:50    [22026096]     Ответить | Цитировать Сообщить модератору
 Re: Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4719
alexeyvg
только папка должна быть на сервере, и у пользователя туда должен быть доступ


Вы имели ввиду, что путь должен быть указан относительно того сервера, где запущен пакет? Ибо никто не мешает паке быть сетевой. Лишь бы доступ туда был.
27 ноя 19, 08:50    [22026249]     Ответить | Цитировать Сообщить модератору
 Re: Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
DimaU
Member

Откуда: Москва
Сообщений: 548
Спасибо. Насчет джоба - хорошая мысль.

Не понял еще как передать имя импортируемого scv-файла (оно теоретически может быть любым, пользователь его подкладывает) в dtsx-файл... В dtsx имя файла присутствует в тегах ... <DTS:ObjectData><DTS:ConnectionManager ... DTS:ConnectionString="X:\имя_файла.csv">...
27 ноя 19, 09:40    [22026292]     Ответить | Цитировать Сообщить модератору
 Re: Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4719
DimaU
Спасибо. Насчет джоба - хорошая мысль.

Не понял еще как передать имя импортируемого scv-файла (оно теоретически может быть любым, пользователь его подкладывает) в dtsx-файл... В dtsx имя файла присутствует в тегах ... <DTS:ObjectData><DTS:ConnectionManager ... DTS:ConnectionString="X:\имя_файла.csv">...


У пакета есть параметры. Нужно забирать имя файла из параметра.
27 ноя 19, 09:53    [22026314]     Ответить | Цитировать Сообщить модератору
 Re: Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
Я бы все это сделал через сетевую папку, куда пользователь выкладывает файлы. Дальше - загрузка по расписанию с SQL server. Пакет пользователю вообще не давать - их то "теряют", то перемещают, то еще что-то.
27 ноя 19, 11:22    [22026435]     Ответить | Цитировать Сообщить модератору
 Re: Как DTExec заставить работать у клиента + установить имя загружаемого файла  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
a_voronin
alexeyvg
только папка должна быть на сервере, и у пользователя туда должен быть доступ


Вы имели ввиду, что путь должен быть указан относительно того сервера, где запущен пакет? Ибо никто не мешает паке быть сетевой. Лишь бы доступ туда был.
В первую очередь то, что у пользователя должен быть доступ к этой папке. У сервера то понятно, как же иначе...
27 ноя 19, 17:56    [22026910]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить