web-dev-qa-db-fra.com

Les packages SSIS fonctionnent pour toujours sans compléter. Query Source OLEDB suspendu

Nous avons plusieurs forfaits qui vont courir par intermittence jusqu'à ce qu'ils soient tués.

Lorsque vous regardez le moniteur d'activité, nous pouvons voir que la requête source de l'une des flux de données est dans un état suspendu avec une attente async_network_io. La tâche restera dans l'état jusqu'à ce que le processus soit tué . Source query suspended

Cela arrive à plusieurs packages différents sur plusieurs serveurs différents. La requête qui devient suspendue est toujours une requête vraiment simple qui fonctionnera sous une seconde si elle est exécutée dans SSMS.

Nous voyons que nous voyons que vous soyez suspendu souvent. L'une est une jointure interne d'une table dans une base de données à une table dans une autre base de données. Il retourne ~ 500 rangées avec ~ 10 colonnes en moins d'une seconde généralement. Le second est juste sélectionné * à partir d'une table avec environ 100 000 rangées.

J'ai lu sur ce que signifie ASYNC_NETWORK_IO et on dirait qu'il est généralement causé par l'application cliente ne signalant pas à SQL qu'il a consommé les données.

J'ai également lu que cela pourrait être une question de ressource/nic, mais cela me semble peu probable. Certains de ces serveurs sont des sursightec'd et le package est en cours d'exécution sur le serveur qui contient toutes les données qu'il manipule. Il ne devrait pas y avoir besoin d'une utilisation du réseau.

Comment puis-je vous assurer que mes packages ne seront pas suspendus indéfiniment?

ÉDITER:

Les deux serveurs qui ont eu cette question ont récemment été les deux éventuellement édition standard SQL Server 2014. Version 12.0.5605.1 et version 12.0.4213.0.

Edit2: Je suis à peu près sûr que la cause est une pression de dos causée par tout un tas de transformations coûteuses. Le paquet a environ 10 commandes OLEDB et quelques dimensions changent lentement. Je pense que cela doit simplement être réécrit.

2
Matthew Bell

Sur la base de votre description, je suppose que le reste du flux de données SSIS est le problème en ce sens qu'il ne peut pas traiter les lignes aussi vite que la requête source les envoie. Ainsi, SSIS s'applique contre-pression Pour que vous n'obtiens pas une énorme quantité de lignes en mémoire dans la SSIS. Cette contre-pression provoque la suspension de la requête SQL. Pouvez-vous décrire le flux de données complet et toutes les transformations/composants/destinations?

Je vous recommanderais d'installer les extensions GRATUITE Developer Developer et d'exécuter la fonctionnalité PIPELINE Composant Performance Breakdown pour confirmer quel composant est votre goulot d'étranglement.

1
GregGalloway