Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Nika gnome
Member

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

Не хочу изобретать "костыли", хочу узнать сложившуюся практику.

В потоке управления:
- первый блок получает по API данные в xml и сохраняет в папку D:/temp/d.xml
- второй блок получает данные в xml из папки D:/temp/d.xml и пишет в базу

В чём сложность? В том, что на сервере диск D, а на моём компе X. И SSDT стоит на моём компе (или его правильнее ставить на сервер и разрабатывать, подключаясь к нему?). Соответственно, запускаю проект у себя - но не могу развернуть на сервере, либо могу развернуть на сервере, но он не запустится у меня на компе.

Есть ли способ указать, чтобы файл сохранялся в некоторую собственную временную папку? И путь задавать как-то типа ./temp/d.xml
29 июл 19, 15:56    [21936958]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
court
Member

Откуда:
Сообщений: 1806
Nika gnome,

параметр создай для пути к каталогу
По-умолчанию, в нём будет твой путь ("а на моём компе X")
А на сервере будешь запускать с указанием значения параметра - "на сервере диск D"
29 июл 19, 16:06    [21936971]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 32313
Блог
На сервере можно указать 1 раз, используя "окружение"
29 июл 19, 17:31    [21937078]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Nika gnome
Member

Откуда:
Сообщений: 560
Критик
На сервере можно указать 1 раз, используя "окружение"
не понял. О каком "окружении" речь идёт?
29 июл 19, 18:22    [21937166]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Критик
Member

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

Environment
29 июл 19, 18:23    [21937167]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
tunknown
Member

Откуда:
Сообщений: 695
Nika gnome
Не хочу изобретать "костыли", хочу узнать сложившуюся практику.
Закостылить можно. На локальном компьютере сделать subst или что-то подобное из под пользователя/сессии(?) SSDT с той же буквой, что на сервере. На этом диске должна быть и папка, как на сервере.

Nika gnome
Есть ли способ указать, чтобы файл сохранялся в некоторую собственную временную папку? И путь задавать как-то типа ./temp/d.xml
Возможно, через скрипты получить переменную окружения %TEMP% или вызвать gettemppath.
30 июл 19, 09:22    [21937457]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 508
Nika gnome
Критик
На сервере можно указать 1 раз, используя "окружение"
не понял. О каком "окружении" речь идёт?

SSIS Catalog Environment - с примерами. Для вашей задачи - подходит создать переменную с путем к XML файлуб и затем при запуске - поставлять в нее значение из переменной environment. А в самом пакете - через expression подставлять значение переменной в путь файла.
30 июл 19, 09:57    [21937513]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
aleks222
Member

Откуда:
Сообщений: 747
Ferdipux
Nika gnome
пропущено...
не понял. О каком "окружении" речь идёт?

SSIS Catalog Environment - с примерами. Для вашей задачи - подходит создать переменную с путем к XML файлуб и затем при запуске - поставлять в нее значение из переменной environment. А в самом пакете - через expression подставлять значение переменной в путь файла.


Хе-хе?
Орлы, тредстартер тупо не понимает, что если он хочет "разные папки в разных местах" - надо озаботиться параметром и местом хранения этого параметра.

А уж хде он его будет хранить и как получать - дело десятое.
30 июл 19, 12:53    [21937786]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6853
Ничего не знает поколение 90-х...

subst d: x:\ от имени администратора.
30 июл 19, 18:34    [21938171]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29341
Владислав Колосов
Ничего не знает поколение 90-х...

subst d: x:\ от имени администратора.
Спорное решение.

Если есть какие то параметры, лучше с ними работать как с параметрами (пути, url-ы, IP-шники)
Хранить где то вместе, с доступом и изменениями единым способом.
А то будет потом..., путь, оказывается, подставляется subst, айпишники в hosts, тут читаем, тут не читаем, тут рыбу заворачивали.
Вот, например, можно использовать Parameters, прямо предназначеные для этих целей. Ну или придумать свои схемы, но общие для компании, и общие для всех параметров пакета, в отличие от subst
30 июл 19, 19:09    [21938199]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Владислав Колосов
Member

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

по-моему Вы слишком хорошего мнения об обсуждаемом проекте :) Если бы это настраивалось параметрами пакета, то и вопроса бы не было.
31 июл 19, 01:06    [21938441]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29341
Владислав Колосов
alexeyvg,

по-моему Вы слишком хорошего мнения об обсуждаемом проекте :) Если бы это настраивалось параметрами пакета, то и вопроса бы не было.
Это я понимаю, что параметров нет, так я и советую их сделать. Речь же о своём пакете, вот и пусть сделают правильно.
31 июл 19, 06:50    [21938468]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Nika gnome
Member

Откуда:
Сообщений: 560
alexeyvg
Владислав Колосов
alexeyvg,

по-моему Вы слишком хорошего мнения об обсуждаемом проекте :) Если бы это настраивалось параметрами пакета, то и вопроса бы не было.
Это я понимаю, что параметров нет, так я и советую их сделать. Речь же о своём пакете, вот и пусть сделают правильно.

+10
1 авг 19, 23:33    [21940243]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Idol_111
Member

Откуда:
Сообщений: 552
нормальная практика в SSIS, не мудрить с ненужными параметрами, а элементарно создать расшареную папку и на проде, и на тесте. И не морочить голову.

К тому же есть еще плюсы в таком дизайне (доступ и т.п.).
2 авг 19, 04:58    [21940278]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
court
Member

Откуда:
Сообщений: 1806
Idol_111
нормальная практика в SSIS, не мудрить с ненужными параметрами, а элементарно создать расшареную папку и на проде, и на тесте. И не морочить голову.

К тому же есть еще плюсы в таком дизайне (доступ и т.п.).
эту "нормальную практику", alexeyvg тут описал 21938199
И называется она "голь на выдумки хитра" :)

Мол, вместо нормального/стандартного подхода с параметрами пакета, что-то такое выдумаем (нуу вот типа алиаса в hosts), что любой другой прогер, которому достанется на поддержку этот пакет, сначала будет долго выяснять "а как же это работает ??7", после чего, - долго материть "выдумщика" ... :)
2 авг 19, 09:46    [21940388]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29341
court
Idol_111
нормальная практика в SSIS, не мудрить с ненужными параметрами, а элементарно создать расшареную папку и на проде, и на тесте. И не морочить голову.

К тому же есть еще плюсы в таком дизайне (доступ и т.п.).
эту "нормальную практику", alexeyvg тут описал 21938199
И называется она "голь на выдумки хитра" :)
Я на самом деле согласен, что решение не должно быть "одно единственно правильное" :-)

Конечно, если речь о таких параметрах, как URL, или папки с исхдными данными от поставщиков, то лучше использовать параметры.
Но если речь, например, о папке для временных рабочих файлах, то, может, действительно самым правильным будет сделать одинаковую структуру на всех компах. Особенно если других параметров, которые было бы неплохо положить в "параметры", нет.
Тут ещё надо учитывать общее окружение - много ли пакетов, много ли DBA, сколько серверов, и т.д.
2 авг 19, 12:40    [21940586]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
alexeyvg> Тут ещё надо учитывать общее окружение - много ли пакетов, много ли DBA, сколько серверов, и т.д.

А я давно завожу SET= виндовую переменную и пляшу от неё.
Проверить легко откуда угодно, а кто не хочет, тот СЗБ
2 авг 19, 20:43    [21940997]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Idol_111
Member

Откуда:
Сообщений: 552
court
Idol_111
нормальная практика в SSIS, не мудрить с ненужными параметрами, а элементарно создать расшареную папку и на проде, и на тесте. И не морочить голову.

К тому же есть еще плюсы в таком дизайне (доступ и т.п.).
эту "нормальную практику", alexeyvg тут описал 21938199
И называется она "голь на выдумки хитра" :)

Мол, вместо нормального/стандартного подхода с параметрами пакета, что-то такое выдумаем (нуу вот типа алиаса в hosts), что любой другой прогер, которому достанется на поддержку этот пакет, сначала будет долго выяснять "а как же это работает ??7", после чего, - долго материть "выдумщика" ... :)

Вы по моему не поняли, что имелось ввиду.
Погуглитете что ли Share Folder.
И если другой прогер не в состоянии понять как такой простой пакет работает, гнать в шею его надо.
19 сен 19, 00:29    [21973764]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3076
Idol_111
court
пропущено...
эту "нормальную практику", alexeyvg тут описал 21938199
И называется она "голь на выдумки хитра" :)

Мол, вместо нормального/стандартного подхода с параметрами пакета, что-то такое выдумаем (нуу вот типа алиаса в hosts), что любой другой прогер, которому достанется на поддержку этот пакет, сначала будет долго выяснять "а как же это работает ??7", после чего, - долго материть "выдумщика" ... :)

Вы по моему не поняли, что имелось ввиду.
Погуглитете что ли Share Folder.
И если другой прогер не в состоянии понять как такой простой пакет работает, гнать в шею его надо.
Ты, милок, в кровавом энтерпрайзе поди не работал, вот и несешь подобную ересь.

Немного контекста, как выглядит ситуация на моем текущем контракте (Big 4 bank). Абсолютно все администрирование инфраструктуры выполняется людьми вендора, которые берут минимум 5 дней на то, чтобы ответить на емейл (SLA больше не позволяет; если бы позволял, тянули бы дольше). Любой тикет затягивается по максимуму; для примера, когда я запрашивал админский доступ на выданный мне для работы лэптоп, это вылилось в 3 недели сношения моего головного мозга (при этом, админские права у меня были только в течение 2 недель). Если формулировку тикета можно понять неправильно, она гарантированно будет понята неправильно, и выполнена в максимально неюзабельном варианте. И так - абсолютно все у них.

Поправить файл hosts, говорите? Прогнать subst под админом? Создать шару где-то там (это еще большой вопрос, где данная шара будет физически находиться, но это мелочи, поверьте)? Ни у кого из нашей команды нет админского доступа на выделенные нам виртуалки. На SQL Server такого доступа тоже нет, мы даже новую БД себе сами создать не можем, приходиться обращаться к ним. Чтобы создать шару на сервере, нужен либо RDP, либо что-то типа SSH (не знаю, есть ли такое под виндой). Ничего такого у нас нет.

В такой ситуации мозги прочищаются очень быстро, и начинаешь совать в параметры SSIS-проекта вообще все, что в теории может параметризоваться, даже если оно никогда не изменится. Потому что это единственное место, где разработчик может быть хоть как-то уверен, что его работу не зафакапят трудолюбивые морлоки, попутно перевесив на него всех собак.
19 сен 19, 08:18    [21973817]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 386
Ennor Tiegael
мы даже новую БД себе сами создать не можем.


Считаю, что в среде кровавого по-настоящему большого Энтерпрайза - это совершенно правильно, что сотрудники непрофильных, по отношению к ИТ-инфраструктуре команд не могут самостоятельно создать себе БД, и запрашивают через заявки (например - RITM, ChangeRequest). Иначе - представляете, какой неконтролируемый хаос начнется? Даже не с кол-вом всяких левых непонятных полу-в продакшене, полу-заброшенных баз - это отдельная история - а, к примеру, не знающие люди выставят неправильные параметры базы, - начальный размер, параметры автоприращения и т.д. и т.п. Если, к примеру, установщик экземпляра MSSQL забыл в св-вах БД model поменять режим восстановления на SIMPLE - то все последующие БД при создании наследуют свойства и параметры model, и получается, что будет абсолютно неконтролируеый спонтанный рост занимаемых гигабайт на сетевых стораджах и прочих SAN.
Как команде, ответственной за сторадж что-то планировать по закупкам, поддержке RPO\RTO, репликацию и DR все эти стораджа?

Работал в такой среде долго кстати. Было около 20.000 БД, раскиданных по шарику. Создание всех БД контролировалось строго через Портал с запросами, процессилось или людьми, или индусами вручную, либо автоматизация срабатывала, но контролируемая автоматизация - с обязательными аппрувалами перед тем, как роботы схватили таск в чейндже
19 сен 19, 09:04    [21973855]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 386
Ennor Tiegael
и начинаешь совать в параметры SSIS-проекта вообще все, что в теории может параметризоваться


Тут согласен на 100%

Есть еще подход, когда конфигурация SSIS-проекта хранится не в инфраструктуре SSIS, - окружение, параметры и т.п., а в БД, - просто перенесенный config-файл в таблицу. Соответственно - на каждый ландшафт - DEV/QA/PROD - заданы свои настройки, а приложение - .NET, SSIS, SSRS - тупо считывает секции из базы, - таким образом - перенос аппликухи по ландшафтам не вызывает проблем. Специально выделенный SSIS-сервер хранит десятки таких пакетов, и все ссылается на уникальную для своего ландшафта базу

В каком-то экзамене Microsoft - не помню, по биай какой-то - даже были расписаны всякие подобные сценарии и примеры дизайна решений SSIS-серверов - разные роли их, функции и прочее
19 сен 19, 10:20    [21973934]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 508
PsyMisha
Есть еще подход, когда конфигурация SSIS-проекта хранится не в инфраструктуре SSIS, - окружение, параметры и т.п., а в БД, - просто перенесенный config-файл в таблицу. Соответственно - на каждый ландшафт - DEV/QA/PROD - заданы свои настройки, а приложение - .NET, SSIS, SSRS - тупо считывает секции из базы, - таким образом - перенос аппликухи по ландшафтам не вызывает проблем. Специально выделенный SSIS-сервер хранит десятки таких пакетов, и все ссылается на уникальную для своего ландшафта базу

Это было актуально для версий SSIS 2005 - 2008. Там, действительно создавали БД с настройками, а пакету при запуске указывали ключ среды - как код набора настроек из такой config БД.
Начиная с SSIS 2012, появились среды (environments) и параметры пакетов. Среды в отдельной БД SSIS хранят настроечные параметры, вплоть до шифрованных паролей. Параметры - передаются в пакет SSIS при запуске. Переменные среды - можно смаппить с параметрами пакета или со строками подключения.
В такой системе развертывание в средах кровавого ентерпрайза - очень просто. Приносится файл проекта, спец утилита (самописная - Картинка с другого сайта.) развертывает его в указанную папку и меппит с указанной средой настроек. Специальные люди занимаются выставлением настроек, и это не разработчики.
19 сен 19, 10:50    [21973963]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 386
Ferdipux,

я понимаю про 2012 и старше
Говорю же - окружение и параметры у проекта мапятся на config-таблицу в БД, а не живут напрямую в SSIS
19 сен 19, 11:07    [21973984]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6853
Ennor Tiegael,

если вам не дают админа, то вы находитесь в плачевном состоянии, т.к. не можете даже локально развернуть проект базы или пакета для тестирования. Т.е. ведете разработку вслепую. Более того, если вы захотите отладить проект SSAS, то это можно сделать в некоторых случаях только, если запускать студию от имени администратора (она пытается выполнить код, который находится в системной папке).
19 сен 19, 11:58    [21974060]     Ответить | Цитировать Сообщить модератору
 Re: ssis: как указать путь к локальной папке? (поясню вопрос в посте)  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3076
PsyMisha
Считаю, что в среде кровавого по-настоящему большого Энтерпрайза - это совершенно правильно, что сотрудники непрофильных, по отношению к ИТ-инфраструктуре команд не могут самостоятельно создать себе БД, и запрашивают через заявки (например - RITM, ChangeRequest). Иначе - представляете, какой неконтролируемый хаос начнется?
Хаос не начнется, ведь количество виртуалок на команду крайне ограничено, за пределы песочницы не выскочить. И диски на них не резиновые. А вот разработка изрядно замедляется, ведь чтобы получить новую базу в DEV, нужно ждать несколько недель.

Кроме того, вы делаете ключевую ошибку - вы считаете этих админов компетентными. Это не админы, это безмозглые индюки, набранные по объявлению, пятачок за пучок. Изучив настройки нашего DEV-экземпляра MSSQL, например, я за 5 минут нашел дырку, которая позволяет поднять права до sysadmin.
PsyMisha
Есть еще подход, когда конфигурация SSIS-проекта хранится не в инфраструктуре SSIS, - окружение, параметры и т.п., а в БД, - просто перенесенный config-файл в таблицу.
Я так делал раньше, когда сам мог создавать базы. В данной же ситуации это непозволительная роскошь - мало того, что сначала придется ждать базу на ДЕВе, и потом такую же на ПРОДе, так это еще и добавляет проекту внешнюю зависимость, которую, если доблестно прощелкать, ничего не взлетит.
Кроме того, строку соединения к этой конфигурационной БД все равно надо хранить в настройках SSIS-проекта. Не хардкодить же ее в пакеты.
19 сен 19, 15:13    [21974361]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить