сбой конвейера для хранимой процедуры, вызываемой в операции копирования - фабрика данных Azure V2 - PullRequest
0 голосов
/ 21 ноября 2018

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

Мы вызываем вышеупомянутую хранимую процедуру через операцию копирования в фабрике данных Azure.Работает нормально для всех случаев, кроме случаев, когда ничего (пустое) не возвращается.

Мы ищем вариант, при котором из хранимой процедуры не возвращается ничего (пусто), конвейер должен пропустить и продолжить, а также пометить весь конвейер как успешный, а скорее неудачный.

Спасибо

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Как сказано в комментарии @DraganB, действия могут выполняться в потоке, поэтому вы можете выполнить stored procedure activity --> if activity --> copy activity. Если выходные данные sp будут пустыми, не запускайте действие копирования и не завершайте конвейер.

Еще одна идея, может быть, вы могли бы узнать о функции Azure триггер внешней таблицы .Вы можете добавить столбец состояния в вашу таблицу, например needToBeCopied, каждая операция вставки или обновления будет изменять столбец.Затем отфильтруйте данные, которые необходимо скопировать во время выполнения операции копирования.

0 голосов
/ 27 ноября 2018

Это решено.Реальная проблема заключалась в том, что операция копирования не возвращала правильное сообщение об ошибке.Возникла проблема с контролем доступа.

Grant VIEW CHANGE TRACKING permission on a table to a user:
[sql]
GRANT VIEW CHANGE TRACKING ON OBJECT::dbo.databaselog to username
[/sql]

Подход с постепенной загрузкой заключается в включении отслеживания изменений в базе данных SQL Server и в необходимых таблицах.Фабрика данных Azure должна регистрировать ошибку как «Недостаточно прав для такой-то таблицы».Вместо этого произошел сбой всего конвейера с сообщением об ошибке, так как «хранимая процедура может быть недействительной или хранимая процедура не возвращает никаких выходных данных».

В любом случае, мы установили правильные разрешения и проблема была решена.Теперь он создает пустой файл только с записью заголовка, когда из хранимой процедуры не возвращаются выходные данные, аналогично - Фабрика данных Предотвращение создания пустых файлов

0 голосов
/ 21 ноября 2018

Ваша хранимая процедура должна завершаться командой SELECT, поэтому она возвращает что-то - включая пустой набор, если нет строк для возврата.

Однако, чтобы пропустить конвейер, если строки нет, последний DraganB последнийответ довольно актуален, я должен был сделать это пару раз в моем текущем проекте.

...