2016-11-09 2 views
0

Я новичок в SSIS и после некоторого содействия в создании пакета SSIS для выполнения конкретной задачи. Мои данные хранятся удаленно в базе данных MySQL и загружаются в базу данных SQL Server 2014. Я хочу сделать следующее: создайте пакет, в котором я могу ввести 2 даты, которые можно сравнить с датой создания даты/даты, измененной для каждой записи, в нескольких таблицах, чтобы дать мне мгновенный снимок и сравнить данные MySQL с SQL Данные, чтобы я мог видеть, есть ли какие-либо строки, отсутствующие в моей локальной базе данных SQL, или если они нуждаются в обновлении. В некоторых таблицах нет дат, поэтому я просто хочу увидеть количество записей о том, чего не хватает, если что-то между 2. Если это лучше достигается с помощью TSQL, я рад услышать о других предложениях или сайтах, чтобы посмотреть, что было сделано аналогично ,SSIS или TSQL для таблицы сравнения SQL/MySQL

Относительно вашего запроса Вкладка: «Привет, что происходит на данный момент, наши основные данные хранятся в базе данных MySQL, данные затем загружаются в базу данных SQL Server как единое целое. на данный момент у меня есть пакет SSIS, который использует идентификатор MAX, который можно найти на большинстве таблиц, чтобы определить, какие записи являются новыми, и просто загружает их или обновляет их. Что я хочу сделать, это запустить отдельные проверки таблиц на убедитесь, что во время загрузки ничего не было пропущено, и все находится в синхронизации. В идеальном мире я хотел бы перейти к пакету SSIS или хранимой процедуре tsql в диапазоне дат, скажем, календарной неделе, это затем проверит любые различия между удаленными таблицами базы данных MySQL и локальными таблицами SQL. В настоящее время он не должен ничего делать, кроме как выявлять проблемы, исправление их может произойти позже, или изменения должны быть сделаны в существующий пакет синхронизации. Надеюсь, что его имеет смысл.»

Благодаря P

+0

Данные MySQL загружаются на SQL Server, поэтому вам нужно сравнить только две таблицы на одном и том же SQL Server? Это верно? –

+0

Чтобы обеспечить синхронизацию, вам нужен ключ, который вы можете сравнить между системами. У вас есть это? Я предлагаю вам забыть о интерактивном вводе дат и вместо этого сравнить данные во всех таблицах. Полезнее знать, совместима ли вся таблица, а не просто ее часть. Кроме того, SSIS не создан для интерактивного использования. Вместо этого вы обычно загружаете эти даты из таблицы или из среды. –

+0

Привет, спасибо за комментарий в ответ на ваши вопросы. Да, есть ключ, который можно сравнить между таблицами.Причина, по которой я хотел быть в состоянии, возможно, вводить даты, может быть законными различиями в данных, загруженных за последние 24 часа 48 часов, поэтому я хотел исключить эти данные из проверки. В идеальном мире я хотел бы использовать этот пакет для нескольких баз данных, они имеют более или менее одинаковые таблицы, но не являются полными копиями. – PJD

ответ

1

Для этого необходимо реализовать тип-Медленно Изменение потока данных типа измерения в SSIS. Есть несколько способов сделать это, в том числе встроенного в преобразовании метко назвал Slowly Changing Dimension трансформации. Несмотря на то, что это легко настроить, это боль, чтобы поддерживать и он работает чудовищно медленно.

есть много способов установить это с использованием других преобразований или даже SQL merge утверждения, которые подробная информация здесь: https://bennyaustin.wordpress.com/2010/05/29/alternatives-to-ssis-scd-wizard-component/

Я бы порекомендовал вам использовать преобразования Lookup, поскольку они работают лучше, чем трансформация Slowly Changing Dimension, но предлагают лучшую диагностику и обработку ошибок, чем более эффективный оператор SQL merge.

Прежде чем вы сделаете это, вам нужно будет добавить столбец или Hashbytes к вашим данным SQL для удобства сравнения с входящими данными MySQL.

Короче говоря, подсчитывайте какую-то повторяемую контрольную сумму, когда данные загружаются в ваш SQL Server, а затем используйте это в SSIS Lookup, сопоставляя по ключу строки, чтобы проверить изменения. Если значение контрольной суммы отличается для той же строки, она нуждается в обновлении, и если в SQL-данных нет соответствующего ключа строки, вам нужно вставить новую строку.

Смежные вопросы