2010-10-07 6 views
0

Je dois extraire des données d'un référentiel SQL Traitez-le, puis enregistrez-le dans le deuxième référentiel. Nature des données:Transfert de données entre deux référentiels SQL Server 2000

Transférer les données des utilisateurs sélectionnés, bien que les tableaux soient similaires dans le référentiel mais pas le même, et qu'une partie du traitement doit être effectuée sur les données à transférer.

Les données de volume sont très grandes 5,00,000.

Quelle technique utiliser pour transférer les données: Utilisez la procédure stockée via le serveur de liaison pour transférer des données. Utiliser DTS - service de transfert de données (Puisque nous avons SQL Server 2000, nous ne pouvons pas utiliser SSIS). Utilisez C# pour extraire des données du référentiel A, Traitez-les et appelez un SP pour insérer des données dans le référentiel B.

Je ne suis pas sûr du chemin à parcourir, je voudrais traiter les données de façon optimale et robuste.

Toute suggestion sera grandement appréciée.

Merci à l'avance.


Merci pour la réponse Je pense aussi que vous tous dit que DTS serait le plus rapide

Mais nous avons une contrainte que je croyais nous limiter d'utiliser DTS le problème est que nous avons 3 niveaux de hiérarchie dans les tables (niveaux de clés étrangères) et la base de données de destination générerait des valeurs d'identité automatique pour chaque table dans la hiérarchie donc ma principale préoccupation est que si je serai en mesure de maintenir les relations avec les valeurs d'identité nouvellement générées si j'utilise DTS

Je suis nouveau concept de DTS mais j'avoir une connaissance solide des procédures de stockage et T-SQL pensez-vous que le maintien de la hiérarchie clé étrangère sera un problème avec DTS

Répondre

1

Il est probable que ce serait le plus rapide de se garer tout dans un fichier de données en bloc et utilisez BCP.exe ou BULK INSERT. DTS serait probablement la deuxième méthode la plus rapide.

0

DTS serait mon choix pour cela. L'interface graphique rend la mise en place d'un processus étape par étape assez simple, et j'aime la gestion des erreurs/exceptions que vous pouvez faire à chaque étape. J'ai utilisé DTS pour déplacer environ 15 millions de lignes ou plus assez souvent, donc le volume que vous avez ici ne devrait pas être un gros problème.

points supplémentaires si vous pouvez obtenir le package DTS à la page un collègue à chaque fois qu'il réussit à courir :)

et une édition pour ajouter ... J'éviter d'utiliser un serveur lié avec un proc stocké pour des volumes de données plus importants si vous pouvez ... je l'ai frappé des problèmes de performance à ce sujet dans le passé

0

un fil de réponse dans les réponses;)

Pensez packages DTS comme une chaîne de « événements » (je Je ne sais pas si c'est le bon terme ... que diriez-vous d'une série d'étapes?) ... en utilisant des lignes de succès/échec, il devient en fait un organigramme facilement lisible. Chaque étape peut être différente, y compris l'exécution des procédures stockées et des instructions t-sql. Votre package DTS peut contenir une importation en masse vers une table temporaire, puis la ou les étapes suivantes lancent storedprocs pour le traiter et éventuellement le placer dans les tables de destination.

Questions connexes