У меня есть данные, поступающие в одну таблицу из нескольких других таблиц, скажем: Table_A Затем у меня есть сохраненный процесс слияния, который берет данные из таблицы A, объединяет их с таблицей B.
Однако что-то, похоже, не так. Если я усекаю и загружаю данные, это работает нормально, но если я не усекаю и не загружаю, а просто получаю запрос каждый час, я получаю сообщение об ошибке, в котором говорится:
Msg 8672, Уровень 16, Состояние 1, Процедура Merge_Table_A, Строка 4 [Начальная Строка Пакета 0] Инструкция MERGE несколько раз пыталась ОБНОВИТЬ или УДАЛИТЬ одну и ту же строку. Это происходит, когда целевая строка совпадает более чем с одной исходной строкой. Инструкция MERGE не может ОБНОВЛЯТЬ или УДАЛЯТЬ одну и ту же строку целевой таблицы несколько раз. Уточните предложение ON, чтобы убедиться, что целевая строка соответствует не более чем одной исходной строке, или используйте предложение GROUP BY для группировки исходных строк.
Как я могу преодолеть это?
Я хочу, чтобы у меня была возможность постепенно загружать данные и не усекать нагрузки, но в то же время иметь сохраненный процесс, который обновляет, вставляет или не заботится о том, существует ли уже строка.