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

Откуда:
Сообщений: 1526
Имеется SSIS-пакет, который затягивает на сервер данные из некого Excel-файла находящегося в расшаренной папке.
Возник вопрос - с какой периодичностью затягивать появляющиеся в этой папке Excel-файлы? Пользователь может создавать в этой папке Excel-файл и раз в месяц и два раза в месяц и три итд...Сделать ежечасовой джоб - будет нагружать сервер...

Поэтому хочу создать BAT файл который бы запускал данный SSIS пакет, при этом чтобы данный BAT файл лежал в этой же расшаренной папке. Такое вобще возможно? Какие подводные камни? На мой взгляд BAT файл будет пытаться запускать SSIS пакет на машине пользователя который его запустил..и ничего не получится. Кто нибудь такое уже реализовывал?
17 окт 14, 10:20    [16718479]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
На мой взгляд BAT файл будет пытаться запускать SSIS пакет на машине пользователя который его запустил..и ничего не получится.

Если ваш пакет создан так, чтобы запускаться только на сервере, то разумеется, что ничего не получится

Santa89
Кто нибудь такое уже реализовывал?

BOL - How to: Run a Package
17 окт 14, 10:43    [16718638]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Santa89
Member

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

я знаете как думал?
- Создать SSIS пакет на SQL Server'e а не в файловой системе, а затем с помощью батника и прописанной в нем SQL-аутентификации (используя какую нибудь служебную уникальную учетную запись) выполнить данный пакет на сервере.

Но вот, что нашел в BOL:

To execute an SSIS package saved to SQL Server using Windows Authentication, use the following code:
dtexec /sq pkgOne /ser productionServer

Про SQL-Server аутентификацию ни слова..
То есть такое чувство, что можно запускать пакет только под Вин-аутентификацией, что конечно же неудобно, пользователю (а то и несколькоим) придется давать права на сервере..
17 окт 14, 10:57    [16718733]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
Но вот, что нашел в BOL:
Про SQL-Server аутентификацию ни слова..

А приведенный выше перечень всех параметров запуска dtexec вы просто игнорировали ?
17 окт 14, 11:00    [16718754]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
Santa89,
http://msdn.microsoft.com/ru-ru/library/ms180378.aspx
http://msdn.microsoft.com/ru-ru/library/hh231187.aspx
17 окт 14, 11:02    [16718780]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Santa89
Member

Откуда:
Сообщений: 1526
У меня даже просто dtexec /sql myPackage /server myServer не работает...я админ и на компе и на сервере...
17 окт 14, 11:18    [16718931]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
У меня даже просто dtexec /sql myPackage /server myServer не работает.

Потому что никто не установил dtexec на вашу машину ?
17 окт 14, 11:19    [16718946]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Santa89
Member

Откуда:
Сообщений: 1526
Есть вроде

К сообщению приложен файл. Размер - 64Kb
17 окт 14, 11:29    [16719050]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
Есть вроде

Тогда не хватило смелости прочитать сообщение об ошибке что ли ?
17 окт 14, 11:30    [16719059]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Santa89
Member

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

при запуске батника появляется окно cmd буквально на полсекунды, окно закрывается и ничего не происходит
17 окт 14, 11:32    [16719086]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
Glory,

при запуске батника появляется окно cmd буквально на полсекунды, окно закрывается и ничего не происходит

Фейспалм.
Т.е. вы не знаете, как запустить cmd и потом набрать там команду что ли ?
17 окт 14, 11:33    [16719100]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Santa89
Member

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

господи..что ж вы умничаете то, запустил и дописал команду уже несколько раз, причем тут то, что вы написали последнем сообщении. я же ясно написал - не происходит абсолютно ничего.
17 окт 14, 11:47    [16719240]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
Glory,

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

Ну разумеется у умных ничего не происходит. Только у дураков происходит вот так

К сообщению приложен файл. Размер - 103Kb
17 окт 14, 11:51    [16719283]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Диклевич Александр
Member

Откуда:
Сообщений: 612
Santa89
Имеется SSIS-пакет, который затягивает на сервер данные из некого Excel-файла находящегося в расшаренной папке.
Возник вопрос - с какой периодичностью затягивать появляющиеся в этой папке Excel-файлы? Пользователь может создавать в этой папке Excel-файл и раз в месяц и два раза в месяц и три итд...Сделать ежечасовой джоб - будет нагружать сервер...

Поэтому хочу создать BAT файл который бы запускал данный SSIS пакет, при этом чтобы данный BAT файл лежал в этой же расшаренной папке. Такое вобще возможно? Какие подводные камни? На мой взгляд BAT файл будет пытаться запускать SSIS пакет на машине пользователя который его запустил..и ничего не получится. Кто нибудь такое уже реализовывал?


Вот тут все разжевано по шагам и в конце еще две ссылки на альтернативные решения.
17 окт 14, 12:43    [16719872]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Santa89
Member

Откуда:
Сообщений: 1526
Диклевич Александр,

SSIS пакет у меня уже полностью готов, к сожалению в статье ниразу не нашел упоминания о создании BAT-файла
18 окт 14, 14:49    [16724931]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Диклевич Александр
Member

Откуда:
Сообщений: 612
так вы утверждате
Santa89
Сделать ежечасовой джоб - будет нагружать сервер

цитата из статьи
Regarding CPU, the Script Task does not use much CPU (effectively zero) while waiting for a file to arrive. Regarding memory use, an SSIS package that runs continuously will stay loaded in memory while it is running and watching for files, just like any other running program would. However for discussion purposes it will occupy effectively the same amount of memory that a package built to run once per minute would occupy.

так что не надо никаких BAT.
18 окт 14, 22:20    [16725880]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
Santa89
Поэтому хочу создать BAT файл который бы запускал данный SSIS пакет, при этом чтобы данный BAT файл лежал в этой же расшаренной папке. Такое вобще возможно? Какие подводные камни?




Вопрос, SSIS пакеты обычно запускают джобом и там есть все возможности задать расписание. Зачем вам сдался BAT файл?
20 окт 14, 12:49    [16730465]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Jaffar
Member

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



1.сделай табличку с обработанными файлами xls/
2.и сохраняй в нее дату последней отработки пакета.
3.Если появились файлы в папке с датой больше чем дата последненго запуска - запускаем пакет.
Можно запускать хоть раз в минуту - никого нагружать не будет.

declare @__TT table(STR_ varchar(512))
insert @__TT(STR_)
exec xp_cmdshell 'dir \\comp\shara\*.xls'

if(exists(
select 1
from @__TT t
cross apply(select convert(datetime, substring(t.STR_, 1, 16), 104) Data) d
where 
		t.STR_ like '[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]%'
and		d.Data > @PREVStart ))
begin
-- запускаем пакет
end
20 окт 14, 14:15    [16731158]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Santa89
Member

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

красиво!

Вот видите какое многообразие решений получилось!
Я вчера вобще сделал VBS-Script который положил на расшареную папку - пользователь запуская его - запускает исполнение пакета хранящегося на SQL Server'е в SSIS-каталоге, все четко отрабатывает!
20 окт 14, 14:48    [16731356]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
сделал VBS-Script который положил на расшареную папку - пользователь запуская его - запускает исполнение пакета хранящегося на SQL Server'е в SSIS-каталоге

А зачем запуск dtexec еще дополнительно оборачивать в VB Script ?
20 окт 14, 14:57    [16731420]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Santa89
Member

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

dtexec не использую. ведь скрипт запускает юзер, у которого dtexec не установлен.
в скрипте идет подключение к серверу и выполнение процедуры в которой на T-SQL прописан программный запуск SSIS пакета.
20 окт 14, 15:51    [16731804]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Диклевич Александр
Member

Откуда:
Сообщений: 612
Santa89
Glory,

dtexec не использую. ведь скрипт запускает юзер


А если юзер забудет запустить скрипт?
21 окт 14, 12:49    [16735970]     Ответить | Цитировать Сообщить модератору
 Re: Создать BAT-файл на сети для выполнения SSIS-пакета  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
в скрипте идет подключение к серверу и выполнение процедуры в которой на T-SQL прописан программный запуск SSIS пакета.

osql -S Myserver -U myser -P mypassword -Q "exec msdb.dbo.sp_start_job 'MyJob'"
21 окт 14, 13:01    [16736103]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить