web-dev-qa-db-fra.com

Erreur SSIS: VS_NEEDSNEWMETADATA

Je suis actuellement en train de mettre à jour tous nos ETL à l'aide de Visual Studio 2015 (réalisé dans BIDS 2008) et de les redéployer vers un nouveau serveur de rapports fonctionnant sur SQL Server 2016 (à l'origine 2008R2).

Lors de la mise à jour de l'un des ETL et de la tentative d'exécution sur le nouveau serveur, j'ai eu cette erreur:


L'exécution du package a échoué. L'étape a échoué.

Parfois, il produit également cette erreur:

Source: Charger la table de faits SSIS.Pipeline Description: "Copier dans la table de faits" a échoué la validation et a renvoyé l'état de validation "VS_NEEDSNEWMETADATA".


J'ai essayé de supprimer et de rajouter la destination OLEDB, les chaînes de connexion et j'ai ouvert les mappages de colonnes pour actualiser les métadonnées. J'ai également recréé l'ensemble de la tâche de flux de données, mais j'obtiens toujours la même erreur.

Le package fonctionne correctement sur ma machine locale.

MISE À JOUR:

J'ai commencé à démonter le paquet et à n'en exécuter que des morceaux pour essayer de déterminer quelle partie échouait. Il semblait échouer lors du chargement dans la table de préparation, mais je n'ai pas pu savoir pourquoi.

J'ai finalement décidé d'essayer de recréer le tout. Après avoir recréé l'ensemble du package, toujours pas de chance. L'image ci-dessous provient de l'observateur d'événements sur le serveur lui-même, mais elle ne m'a donné aucune nouvelle information.

enter image description here

Erreur de package de l'observateur d'événements

5
Jonathan Porter

J'ai finalement trouvé le problème et voici comment je l'ai fait.

Parce que les messages d'erreur que je recevais de SSMS n'étaient pas très perspicaces, j'ai d'abord ouvert mon bureau distant et me suis connecté au serveur. Ensuite, je suis allé dans Outils d'administration> Observateur d'événements, puis dans Journaux Windows> Application pour voir si l'événement ayant échoué fournirait plus de détails.

enter image description hereenter image description here Ça ne m'a pas donné grand chose encore.

La prochaine étape que j'ai prise était d'exécuter le package à partir de la ligne de commande car les messages devraient être plus verbeux. Ouverture de cmd, changement de répertoire dans celui dans lequel se trouvait mon package, puis ...

DTEXEC /FILE YourPackageName.dtsx

Enfin, le message d'erreur ici montrait une colonne manquante dans les tables dans lesquelles le package essayait d'écrire. J'ai ajouté ces colonnes et le tour est joué!

12
Jonathan Porter

J'ai essayé toutes les solutions fournies ci-dessus et les autres sites. Rien n'a fonctionné.

J'ai reçu une suggestion de mon ami qui a fonctionné pour moi.

Voici les étapes:

  1. Cliquez avec le bouton droit sur le composant de flux de données source/cible.
  2. Allez dans Advanced Editor -> Component Properties
  3. Trouvez ValdateExternalMetadata à False.

Tente ta chance. C'est un problème pathétique et m'a laissé sans idée pendant 2 jours.

enter image description here

12
Pavithran

Comme indiqué dans les commentaires,
s'il fonctionne correctement dans votre environnement de développement, le problème n'est pas lié au package, mais au travail planifié sur le serveur. Essayez de recréer cela.

Si cela ne fonctionne pas,
Il semble que le serveur ait une instance mise en cache du package qu'il utilise au lieu de la mise à jour. Essayez de renommer votre package et de créer un nouveau travail avec le nouveau nom de package et voyez si cela fonctionne.

Si cela ne fonctionne pas, tout ce que je peux recommander à ce stade est de réduire le package jusqu'à ce qu'il réussisse, puis d'ajouter l'étape suivante qui échoue.

On dirait que de votre solution l'environnement de développement est plus indulgent pour les mises à jour de schéma que la solution déployée. Heureux que vous ayez pu résoudre, éliminer l'encombrement aide.

3
Beth

J'ai eu le même problème et mon problème était une différence entre deux environnements, le même champ dans la même table a été écrit une fois avec une majuscule et une fois pas. Le nom était donc le même, mais avec cette petite différence (par exemple isActive vs IsActive).

Cela est venu d'un effort de refactorisation, où nous avons utilisé la publication de base de données VS qui n'a pas mis à jour le nom du champ.

0
Zsombor Zsuffa

Avez-vous essayé de supprimer et de recréer la source? Lorsque j'obtiens ceci, je peux généralement modifier OK n'importe quel objet qui a l'erreur, mais je dois supprimer et reconstruire les chemins entre eux, mais parfois je dois tout supprimer dans le flux de données et le recréer.

0
Andrew O'Brien

Il est très courant d'obtenir ce message lorsque 2 colonnes du fichier source sont insérées dans le même champ de la table.

c'est à dire.

Mon fichier texte a deux fois "voisinage" (même étiquette pour différentes colonnes) et ma table a "voisinage" et "voisinageb" (remarquez le "b" à la fin). L'importation essaiera d'importer les deux colonnes de texte dans le champ "voisinage" et ignorera le champ "voisinageb", il échouera avec l'erreur "VS_NEEDSNEWMETADATA".

0
RaRdEvA

Un proxy pour l'exécution du package SSIS doit être créé sous l'Agent SQL Server. Vous devez ensuite modifier votre ou vos étapes de travail en Exécuter en tant que proxy que vous avez créé.

J'ai eu votre même problème il y a quelque temps et le proxy l'a corrigé.

Pardonnez-moi si vous avez déjà essayé.

0
tlemaster