2012-09-12 10 views
0

J'ai une tâche de commande SQL dans SQL Server qui met à jour seulement 20 lignes par seconde, mais j'ai besoin de mettre à jour plus de 200 000 lignes qui prennent du temps. Lorsque j'utilise SCD (Type 2), il n'introduit ni ne met à jour aucun enregistrement. (Pas même donner d'erreur)Comment augmenter la vitesse de mise à jour dans ssis

Certains lots de lignes sont transférés et la tâche de commande SQL devient jaune .. bien que la mise à jour des colonnes soit très lente (20 lignes par seconde).

Comment puis-je augmenter la vitesse de mise à jour?

Répondre

3

N'utilisez pas la tâche SQL. Il effectue des opérations singleton de sorte que vous pouvez vous attendre à ce que 200 000 instructions de mise à jour soient émises par rapport à la base de données cible. Vous pourriez obtenir une augmentation marginale si vous avez créé une procédure stockée pour éviter quelques étapes dans le processus de compilation de la requête, mais vous devrez tester et voir.

Le véritable moyen d'améliorer les performances consiste à créer une table intermédiaire et à vider toutes les lignes à mettre à jour dans cette table. Une fois le flux de données terminé, connectez une tâche SQL d'exécution pour effectuer la mise à jour par lots de la table de transfert vers votre table cible.

Permettez-moi de savoir si une image serait que plus clair

+0

C'est une très bonne suggestion. +1 pour ça. Mais j'ai tellement de tables dans ma base de données et pour cela je ne peux pas créer de table de mise à jour de suppliment/intermédiaire. Est-ce possible que je puisse stocker cette sortie dans le jeu d'enregistrements et utiliser le jeu d'enregistrements comme source? – Zerotoinfinity

0

Si vous utilisez SQL Server 2008 ou d'essayer au-dessus de l'instruction MERGE (dans une tâche d'exécution SQL) qui fonctionne de manière à base de jeu plutôt que la RBAR (ligne par row) d'une commande SQL

Questions connexes