J'utilise SSIS pour générer et transformer de nouvelles données pour une utilisation ultérieure dans un nouveau système. J'ai un problème chaque fois que j'exécute mon package SSIS, il continue d'insérer de nouveaux enregistrements dans mes tables de destination.
Comment puis-je d'abord vider ma table de destination (/ OLE DB Destination) puis insérer les enregistrements nouvellement générés?
Actuellement, la solution de contournement pour ce problème effectue une delete from DestTable
avant d'exécuter mon package.
Mettez votre instruction de suppression dans un Execute SQL Task
. Faites-en ensuite le premier composant de votre flux. Le composant ressemble à ceci:
Créez une tâche d'exécution SQL. Faites-le courir en premier. Pour le sqlstatment faire.
Truncate table DestTable
Il est préférable d'utiliser la table tronquée que d'utiliser la suppression car elle ignore tous les index et supprime tout simplement.
Pour un peu d'informations de fond. Je vais essayer d'expliquer pourquoi vous devez utiliser la table tronquée au lieu de la supprimer. La suppression de table est une opération basée sur les lignes, cela signifie que chaque ligne est supprimée. La table tronquée est une opération de page de données dont la page de données entière est délocalisée. Si vous avez une table avec un million de lignes, il sera beaucoup plus rapide de tronquer la table que d'utiliser un état de suppression de table.
Une mise en garde sur l'utilisation de la table tronquée, elle fonctionne mieux pour les raisons indiquées. Cependant, il nécessite également des privilèges supplémentaires pour votre compte système SSIS. Vous devez être sûr que ceux-ci sont disponibles dans Production, sinon vous devrez utiliser Supprimer.
vous devez utiliser ceci
truncate table table_name
cela vide la table