2017-06-22 1 views
-1

Je suis un développeur ex multi valeur qui au cours des 6 derniers mois ont été introduits dans le monde du SQL et des excuses d'avance pour la longueur de la question. Jusqu'à présent, je me suis débrouillé avec un instinct général (peut-être une certaine ignorance!) Et beaucoup d'aide des bonnes personnes sur ce site répondant aux questions précédemment posées.SQL Server base de données de rapports mis à jour avec des données de MySQL par emploi planifié

Tout d'abord quelques arrière-plan ...

J'ai une base de données de rapports (SQL Server) et une nouvelle application (en utilisant MySQL) que je cherche à copier des données à partir soit à 30 minutes, toutes les heures ou un jour d'intervalle (sera basé sur les besoins de reporting). J'ai un serveur lié créé afin que je puisse voir la base de données MySQL à partir de SQL Server et avoir des privilèges pertinents sur les deux bases de données pour faire lire/écrire/mettre à jour.

Les données que je cherche à passer à la 30 Les horaires minute ou horaire sont généralement des en-têtes/transactions par nature, des colonnes date/heure créées et modifiées pouvant être utilisées. Si vous observez les autres flux de la base de données de génération de rapports, Fusionner est l'instruction la plus fréquemment utilisée sur les serveurs liés mais sur d'autres bases de données de serveur SQL. Les instructions de fusion semblent également effectuer une comparaison table-table complète qui, dans certains cas, prend un certain temps (> 5 minutes) pour se terminer. Alors que la fusion semble être une option sûre, je remarque une baisse des performances sur le reporting, alors que les plus grandes tables sont en cours de traitement. En examinant les charges delta uniquement, en utilisant des plages de dates dynamiques (par exemple entre -1 heure: 00: 00 et -1 heure: 59: 59) sur les horodatages créés et modifiés, mon souci serait la défaillance d'un l'exécution du travail pourrait désynchroniser les bases de données. Plutôt que de demander initialement des instructions sql spécifiques, ce que je cherche est une approche générale/conception d'instruction pour les instructions exécutées plus régulièrement (toutes les heures), l'idéal étant simplement d'effectuer des charges delta des lignes nouvelles ou modifiées en toute sécurité avec une connexion SQL Server à MySQL.

J'espère que l'information donnée est suffisante et que toute aide/suggestion/pointeur sur le matériel de lecture est acceptée avec reconnaissance.

Merci à l'avance

Darren

+0

tmi dude tmi exemple reproductible – polka

+0

Quelle est la question? – Shawn

+0

Je suppose que la question est "comment puis-je structurer une requête pour prendre des données (modifications et insertions seulement) de MySQL à SQL Server toutes les heures" – Darren

Répondre

0

j'ai fait un peu de « jouer » le week-end.

L'approche que je travaille tire les données (insertions et mises à jour) de MySQL via openquery dans un CTE. Je fusionne ensuite le CTE dans la table SQL Server. La requête ouverte semble lente (par rapport à d'autres tables liées) mais la fusion est beaucoup plus rapide en raison de la limitation de la quantité de données source.