Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Прошу помощи в реализации задачи для SSIS: из переменной пакета Variable1 (string) берётся полный путь файла, в переменную пакета Variable2 (boolean) пишется признак File In Use, в переменную Variable3 (Int64) пишется размер файла в байтах. Очевидно, что задача решается через Script Task. Проблема - вообще не знаю С# и VB, копипаста нагугленных решений давала невозможность выполнения кода с целой россыпью ошибок. Использую SSDT 2016 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 21:38 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Trurlпризнак File In Use В отличие от остального, это нечеткая и не совсем уж тривиальная задача. Впрочем, у вас есть простой путь: Execute Process Task + dir + Windows Sysinternals Handle.exe ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 00:35 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
.ЕвгенийTrurlпризнак File In Use В отличие от остального, это нечеткая и не совсем уж тривиальная задача. Да ладно те, попытка открыть файл с эксклюзивным доступом на запись. Не открылся - File In Use. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 06:08 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
aleks222Да ладно те, попытка открыть файл с эксклюзивным доступом на запись. Не открылся - File In Use. Или файла установлен атрибут Read Only, или у пользователя недостаточно прав. У-упс, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 10:48 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
.Евгенийaleks222Да ладно те, попытка открыть файл с эксклюзивным доступом на запись. Не открылся - File In Use. Или файла установлен атрибут Read Only, или у пользователя недостаточно прав. У-упс, да? В чем разница, Зин? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 11:29 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
aleks222.ЕвгенийИли файла установлен атрибут Read Only, или у пользователя недостаточно прав. У-упс, да? В чем разница, Зин? Во всем, если нужно прочесть стабильный файл. Во многом, если нужно дождаться окончания блокировки. P.S. - Твоя программа пишет, что файл заблокирован. Так? - Да. - Берем Handle, смотрим результат. Где блокировка файла? - Ну, не знаю... значит, что-то еще мешает. Неправильно выгрузили файл... - Смотри сюда. Передо мной бизнес поставил глобальную задачу: обработать файл. Благодаря твоему компоненту задача не выполняется. Частную задачу, поставленную тебе, твой компонент выполняет неправильно. Корректно указать на причину не может. Ты у нас джуниор, нет? Ну тогда извини, поздно тебя учить решать поставленные задачи вместо своих собственных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 12:52 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Давайте разделим задачу на две независимых: 1) убедиться, что файл из сетевой папки никем не изменяется и может быть скопирован для дальнейшей обработки DTS-пакетом. 2) мы достоверно знаем, что файлом никто не пользуется. Нужно получить размер файла. (Чтобы при превышении порогового значения зазиповать файл и передать имя зип-архива в задачу отправки почты). Да, можно это сделать через запуск команды dir с записью результатов в неструктурированный текстовый файл, построчный импорт содержимого этого файла в SQL и последующего анализа. Но это - не наш метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 18:07 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
TrurlДавайте разделим задачу на две независимых: 1) убедиться, что файл из сетевой папки никем не изменяется и может быть скопирован для дальнейшей обработки DTS-пакетом. 2) мы достоверно знаем, что файлом никто не пользуется. Нужно получить размер файла. (Чтобы при превышении порогового значения зазиповать файл и передать имя зип-архива в задачу отправки почты). Да, можно это сделать через запуск команды dir с записью результатов в неструктурированный текстовый файл, построчный импорт содержимого этого файла в SQL и последующего анализа. Но это - не наш метод. Не проще ли будет попытаться заархивировать файл? Ошибки обрабатывайте или транслируйте в лог, а при успехе работайте с архивом как вам заблагорассудится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 18:59 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
.ЕвгенийНе проще ли будет попытаться заархивировать файл? Ошибки обрабатывайте или транслируйте в лог, а при успехе работайте с архивом как вам заблагорассудится. Проще. Но это решение другой задачи. Моя задача формулируется так: есть большой пакет, который генерирует разнообразную отчётность. Все отчёты представляют из себя csv-файлы. Отчёты нужно отправлять пользователям электронной почтой. Большие отчёты не пролезают сквозь фильтр корпоративной почты, так как отсекаются по объёму в 20 мегабайт. Файл с отчётом нужно зазиповать только в том случае, если нельзя его отправить в незазипованном варианте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 19:10 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
TrurlМоя задача формулируется так: есть большой пакет, который генерирует разнообразную отчётность. Все отчёты представляют из себя csv-файлы. Отчёты нужно отправлять пользователям электронной почтой. Большие отчёты не пролезают сквозь фильтр корпоративной почты, так как отсекаются по объёму в 20 мегабайт. Файл с отчётом нужно зазиповать только в том случае, если нельзя его отправить в незазипованном варианте. Возможно ли модифицировать большой пакет, чтобы он поддерживал (читал/писал) наличие/отсутствие блокировки на файле (таблица со списком файлов в работе, файлы-дубли xxx.lck и т.п.? А в идеале - самостоятельно отправлял файлы, благо это дело нехитрое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 20:37 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
.ЕвгенийВозможно ли модифицировать большой пакет, чтобы он поддерживал (читал/писал) наличие/отсутствие блокировки на файле (таблица со списком файлов в работе, файлы-дубли xxx.lck и т.п.? Так мне и нужна помощь по написанию компонента, который бы определял, есть на файле блокировки или нет. Есть блокировка - завершить выполнение пакета. Нет блокировки - скопировать файл и начать тянуть из него данные. .Евгений А в идеале - самостоятельно отправлял файлы, благо это дело нехитрое. Он и так сам отправляет. Задача - написать функцию, которая будет направлять поток по сценарию отправки оригинального файла либо по сценарию зипования и отправки зазипованного файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 21:34 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Trurl, у тебя workflow с входным параметром пути и имени файла (т.е. полный путь) поставь script task (проверки на lock файла) на выходе которого будет успешное окончание либо выход с ошибкой например при помощи PowerShell код выхода ошибки будет 999, а 0 - это чистый/успешный выход без ошибок Код: powershell 1. естественно путь файла будет параметром из SSIS типа (User::my_file_full_path) т.е. всё выражение команды можно конструировать через expressions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 23:11 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Trurl, кажется, мы друг друга не понимаем. Еще раз объясню свое мнение. Большой пакет формирует отчетность. Если вся ее обработка находится в большом пакете, то модифицировать отчетность кому-то еще нет видимого смысла. Чтобы кто-то не совершил бессмысленное действие, такую возможность легко блокировать правами пользователя. Соответственно, конфликт отсутствует, проверка блокировок (сомнительным способом) не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 16:10 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
TrurlТак мне и нужна помощь по написанию компонента, который бы определял, есть на файле блокировки или нет. Есть блокировка - завершить выполнение пакета. Нет блокировки - скопировать файл и начать тянуть из него данные.Неверная постановка задачи. Информация о заблокированности файла становится бессмысленной сразу после ее получения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 16:52 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
.ЕвгенийTrurl, кажется, мы друг друга не понимаем. Еще раз объясню свое мнение. Большой пакет формирует отчетность. Если вся ее обработка находится в большом пакете, то модифицировать отчетность кому-то еще нет видимого смысла. Чтобы кто-то не совершил бессмысленное действие, такую возможность легко блокировать правами пользователя. Соответственно, конфликт отсутствует, проверка блокировок (сомнительным способом) не требуется. Мы точно не понимаем друг друга. Есть две разных задачи: 1) получить размер файла, 2) получить сведения, что в файл не совершается запись. Всем мои объяснения, как я это планирую использовать, не влияют на формулировку задач. Вот здесь предлагается решение: http://microsoft-ssis.blogspot.com/2011/03/get-file-properties-with-ssis.html Я все варианты повторяю в в своей Visual Studio, но всегда получаю одинаковую ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 17:46 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
invmНеверная постановка задачи. Информация о заблокированности файла становится бессмысленной сразу после ее получения. В моём случае верная. Поставщик данных выкладывает архивные файлы одной порцией на наш FTP-сервер рано утром. После того, как передача всех данных завершена, в эти файлы уже никто писать не будет. Мне нужно узнать, что передача файлов завершена и я могу начать извлекать из этих архивов файлы с данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 17:55 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
TrurlПоставщик данных выкладывает архивные файлы одной порцией на наш FTP-сервер рано утром. После того, как передача всех данных завершена, в эти файлы уже никто писать не будет. Мне нужно узнать, что передача файлов завершена и я могу начать извлекать из этих архивов файлы с данными. Смотрите наличие установленных FTP соединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 20:05 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
TrurlПоставщик данных выкладывает архивные файлы одной порцией на наш FTP-сервер рано утром. После того, как передача всех данных завершена, в эти файлы уже никто писать не будет. Мне нужно узнать, что передача файлов завершена и я могу начать извлекать из этих архивов файлы с данными. Молодой человек, Вы делаете мне смешно. Поставщик выкладывает текстовый файлик info.txt, в котором последней строкой идет хэш от даты и времени создания этого файла (ну или просто текстовый "EOF"), а до этого для каждого выложенного файла идет md5 хэш (или sha-1) и название файла. Вы читаете маленький файлик, парсите, получаете список того, что НУЖНО таки обработать. Нет файла из списка - передача по FTP не завершена. Если файлики на месте - циклом читаете содержимое, от него сразу вычисляете хэш, при несовпадении с нужным значением из массива помечаете (или отправляете сообщение "Ой-вей, все плохо, или bad sectors, или nonECC memory error, или повредился файл при передаче из-за сбойной сетевой карты, или запись в файл ЕЩЕ не завершена, все еще идет передача) и переходите к следующему. Если все без ошибок - еще отдельное письмо "Файлики кошерные, таки все хорошо!". ВСЁ. Не нужно изобретать велосипед. Нужно уметь работать с поставщиком данных. Ему тоже важно выгрузить на Ваш FTP свои файлики в целости и сохранности. Соединений может не быть. Активных. Пришел сисадмин, вырубил файерволлом все коннекты, файл оборвался на середине. НИЧЕГО не держит такой файл на запись, но тем не менее файлом пользоваться НЕЛЬЗЯ. Понимаете теперь "всю глубину наших глубин" (с) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 01:00 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
.ЕвгенийTrurlПоставщик данных выкладывает архивные файлы одной порцией на наш FTP-сервер рано утром. После того, как передача всех данных завершена, в эти файлы уже никто писать не будет. Мне нужно узнать, что передача файлов завершена и я могу начать извлекать из этих архивов файлы с данными. Смотрите наличие установленных FTP соединений. Отсутствие FTP соединений означает не то, что передача всех файлов завершена. Это может означать, что первую порцию передали, потом сделали долгую паузу, закрыв соединения, потом продолжили передача оставшейся части. Не нужно советовать так оптимистично. Ведь коллега послушает Ваш совет - и так и сделает. Желательно сразу указывать на подводные камни. То есть в целом Ваш совет неплох - но не для данного конкретного случая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 01:02 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, откуда у Вас уверенность, что файл info.txt есть? У меня такой уверенности нет. Опять же, функции вычисления хэшей файлов в SSIS нет. Реализация моей задачи не средствами SQL Server Integration Services вообще не имеет отношения к текущему разделу форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 01:15 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Trurlоткуда у Вас уверенность, что файл info.txt есть?Если подобного файла нет, то вы сами себе злобные буратины вместе с поставщиком. TrurlОпять же, функции вычисления хэшей файлов в SSIS нет.Script Component придется таки освоить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 01:21 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
TrurlAndy_OLAP, откуда у Вас уверенность, что файл info.txt есть? У меня такой уверенности нет. Опять же, функции вычисления хэшей файлов в SSIS нет. Реализация моей задачи не средствами SQL Server Integration Services вообще не имеет отношения к текущему разделу форума. Вы таки не поняли. У меня уверенность, что такого файла нет. Но он должен быть. Вы решаете проблему передвижения путем попытки запрять корову сзади телеги. А нужно взять лошадь и запрячь спереди телеги. Понимаете аналогию? Нужно решать правильную проблему. Ту, которую можно и нужно решить. А не ту, которую Вам задали решать - а тут даже не так, а просто проблему, которую Вы считаете нужной для решения. Не нужно гадать про файлы. Передаются, не передаются, открыты на запись, есть коннекты. Это все лишнее. Получили список файлов, получили список хэшей, начали обрабатывать. Нет файла на месте, а название в перечне есть - все, проблема. Есть файл, но сумма не совпадает - все, проблема. А кто его на запись держит или обрубилась передача на полпути - это уже раскопки по результату проблемы. Того, кому нужно СОДЕРЖИМОЕ файла, не интересуют FTP коннекты. Ему важно - это информация или свалка байтов. Понимаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 01:21 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, отбросим все мои объяснения на тему зачем мне решать мою задачу. Мне нужно знать, как средствами SSIS получить в переменные пакета два атрибута файла - размер и FileInUse. Ваша квалификация позволяет дать ответ на этот конкретный вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 01:42 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
TrurlМне нужно знать, как средствами SSIS получить в переменные пакета два атрибута файла - размер и FileInUse.Хорош фантазировать, нет у файла атрибута FileInUse, в NTFS забыли предусмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 02:05 |
|
||
|
SSIS: Получить атрибуты файла
|
|||
|---|---|---|---|
|
#18+
Trurl, SSIS всего лишь контейнер WorkFlow с некоторыми стандартизированными блоками он вовсе не покрывает абсолютно весь спектр возможных задач (как и любой другой инструмент) так что остальное только скриптами и прочими кастомными блоками. да хоть через SQL (xp_dirtree, xp_cmdshell, xp_fileexist и т.д.) можешь запросить что там в директории происходит и в каком состоянии находится, никто ведь не запрещает. для работы с файлами - лучше использовать для этого предназначенные инструменты, в самом Windows есть куча утилит как GUI так и API (.bat скриптовые, .vb, .NET и пр.) для решения таких вопросов вызвать их из SSIS - всегда было довольно просто. кстати переименование файла на котором стоит Lock : вывалится с ошибкой, это свойство успешно и можно использовать в SSIS для проверки (а дальше : ошибка - одна ветвь алгоритма, ок - другая). в общем вопрос фантазии и опыта реализации. если отбросить завесу мутности и примитивности некоторых персонажей то в остальном тебе дали достаточно широкий спектр потенциальных направлений решений дальше - вопрос личных предпочтений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 02:06 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39738320&tid=1688713]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 274ms |
| total: | 453ms |

| 0 / 0 |
