2010-12-15 7 views
0

Je reçois une erreur avec un package SSIS dont je ne suis pas sûr comment résoudre. Je pense que je vais devoir donner un arrière-plan à ce que j'essaie de faire pour vous aider à comprendre:Problème avec l'erreur SSIS (recherche et commande OLE DB)

J'utilise une base de données OLE DB Source (SRC DB) et l'entrée de ce résultat est affichée dans une recherche (DEST DB). Je vérifie si un champ de la base de données SRC existe dans la base de données DEST. Dans mon cas, le champ que je vérifie est appelé inkexID, qui est un INT NOT NULL et est une clé primaire composite avec un champ ID.

La recherche vérifie si l'identificateur inkexID existant dans la base de données SRC existe dans la base de données DEST. S'il n'existe pas, il l'insère et 3 autres champs dans la BD DEST, s'il existe, il met juste à jour 1 champ dans la BD DEST.

Mon problème est ici: En ce qui concerne la recherche, il vérifie la inkexID sur les 2 tables et voir ce qu'il n'y a pas de correspondance, mais le composant échoue. Il ne semble pas envoyer de sortie d'erreur (ce qui est nécessaire pour appeler la commande OLE DB d'insertion initiale.). Si je mets la config d'erreur pour rediriger les lignes ou ignorer l'échec, il échoue sur l'insert. Cela me donne une erreur sur la violation de mon schéma de base de données, même si le champ que j'essaie d'insérer est 12345.

J'ai supprimé le champ en tant que clé primaire et l'ai défini pour autoriser les valeurs NULL, donc quand je l'ai exécuté à nouveau, j'étais surpris de voir qu'il tente d'insérer un NULL dans le champ, même si la valeur de la SRC DB est 12345.

il semble qu'il y ait sortie rien de la Recherche. Quelqu'un peut-il aider à savoir pourquoi rien ne sortirait de la recherche ???

Très apprécié, Cian

Répondre

0

Utilisez le Générateur de profils SQL Server pour exécuter une trace sur le serveur.

Démarrez la trace, puis exécutez le package. La trace du profileur va capturer toutes les commandes T-SQL réelles qui sont envoyées au serveur de base de données. Vous pouvez ensuite copier chaque commande dans une fenêtre de l'éditeur de requête, l'exécuter et voir le jeu de résultats ainsi que le plan d'exécution pour le réglage.

0

J'ai trouvé ce que l'erreur était:

Je l'avais mis en place le champ inkexID de SRC DB pour rechercher la inkexID du DEST DB. Je l'avais cependant accidentellement mis en place coché et mis la colonne de la DB SRC pour remplacer le inkexID dans DEST DB. Je l'ai simplement décacheté et j'ai simplement mis en place la relation.

RESULTAT !!! Il vérifie maintenant inkexID et si elle existe dans le DEST DB va simplement mettre à jour le temps avec LastUpdated l'heure actuelle, sinon il insère la inkexID correcte, l'heure actuelle comme dateAdded et dateUpdated et le StatusID comme actif.

Yay!

Questions connexes