Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Yagrus2 Member Откуда: Москва Сообщений: 902 |
Hello world! Для интеграции DWH и баз-источников, созданы SSIS - пакеты. Таких баз порядка 10 шт. Обращение к источнику происходит через Connection Manager, где прописаны все параметры подключения. Периодически, какой-то из серверов выключают, переносят или химичат с учетными данными. Из-за этого весь пакет заваливается. Если ли возможность делать проверку на доступность базы из SSIS - пакета? Параллельно решаем этот вопрос административно, но в моей компании это может растянуться на неопределенный срок. |
28 ноя 17, 10:09 [20987553] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
Yagrus2, первый пакет с запросом вида "where 1=2", если он падает, значит база недоступна |
28 ноя 17, 10:13 [20987564] Ответить | Цитировать Сообщить модератору |
Ferdipux Member Откуда: Москва Сообщений: 584 |
А какую задачу вы пытаетесь решить такой проверкой? Предложенный выше способ - примитивный
select 0
- подойдет с ограничениями. SSIS до выполнения пакета его валидирует, то есть пытается подключиться к источнику и проверпить источники на соответствие с определениями пакета. Если подключения нет - пакет завалится еще на этапе валидации, до выполнения select. Придется писать для всех Data Flow - пакета delayvalidation=true и пр.Если вы запускаете пакет из SQL Job - я бы первыми действиями сделал примитивный select к каждому источнику, и обрабатывал результаты. Тогда из шага, на котором упал Job - можно понять, какая база недоступна. |
||
28 ноя 17, 10:43 [20987640] Ответить | Цитировать Сообщить модератору |
Tepes Member Откуда: Сообщений: 40 |
Yagrus2, У меня такой пакет SELECT @@servername as Server, db_name () AS DatabaseName, cast (DATABASEPROPERTYEX(db_name (), 'Status') AS varchar ) AS DBStatus, cast (DATABASEPROPERTYEX(db_name (),'UserAccess') AS varchar) AS Access |
28 ноя 17, 10:59 [20987682] Ответить | Цитировать Сообщить модератору |
Yagrus2 Member Откуда: Москва Сообщений: 902 |
Повысить надежность выполнения пакета. Чтоб недоступность одной из баз не влияла на весь пакет. |
||
28 ноя 17, 12:34 [20988010] Ответить | Цитировать Сообщить модератору |
Andy_OLAP Member Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион Сообщений: 3151 |
Коллега, если отвлечься немного в сторону от работы самих пакетов SSIS. Есть одна база. В ней продажи розничные по чекам в разрезе ККМ. Есть вторая база. В ней из кассовой системы заносят привязку новых ККМ к магазинам учетной системы. Выгрузили продажи. Вторая база недоступна. Вы как будете - чеки "кидать" на неопознанный магазин с кодом 0? Для всех ККМ новых в одну кучу? То есть я к чему - данные есть, циферки куда-то выгрузились и просуммировались. Но в одном или нескольких разрезах - это мусор. А дальше то что... Если данные между собой связаны - значит, на момент отработки пакета SSIS - когда данные в DWH меняются от одного стабильного состояния до другого - все источники должны быть онлайн и отдавать корректные данные. Если у Вас постфактум идет update на полученные данные информацией из другой системы - так зачем все пихать в один SSIS пакет? Вам нужна параллельная загрузка? Ну так можно в SQL Agent Job сделать старт нескольких других заданий последовательным вызовом процедур msdb.dbo.sp_start_job, а внутри каждого задания по своему пакету и по обвязке - проверка доступности БД-источника, отсылка писем и так далее. |
||||
28 ноя 17, 12:46 [20988061] Ответить | Цитировать Сообщить модератору |
Критик Member Откуда: Москва / Калуга Сообщений: 34730 Блог |
делаем проверку по периодическому выполнению SELECT 1, если ошибка, то письмо (причем не только перед загрузкой, но и после релиза, т.к. у нас переметризированные пакеты, и если накосячить с параметрами, то пакет работать не будет) + каждый источник грузится в своем проекте (более 20) |
28 ноя 17, 13:30 [20988304] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |