Tâche SQL SSIS - "le nom du paramètre n'est pas reconnu"

j'ai une tâche SQL qui doit exécuter une simple mise à jour pour mettre à jour une seule ligne.

j'ai mis de l'occurrence de SQLStatement:

update agency set AgencyLastBatchSeqNo = ? where agencyID = ?

sur la page de mappage des paramètres j'ai donné le paramètre 0 et le paramètre 1 à des variables que je sais contenir les bonnes valeurs. J'ai également défini les valeurs des noms de paramètres correctement.

dans la base de données, la colonne AgencyLastBatchSeqNo est une int, AgencyID est une grosse int. Est-ce que quelqu'un a une référence pour trouver ce que la carte des types de données to in SSIS? J'ai deviné à court pour l'int et à LONG pour le grand int.

Lorsque j'exécute la tâche que j'obtiens l'erreur suivante:

[exécuter la tâche SQL] Erreur: exécuter la requête " update agency set AgencyLastBatchSeqNo = ? où AgencyID = ?"a échoué avec l' erreur: "nom du Paramètre non reconnu.". Raisons possibles d'échec: Problèmes avec la requête, la propriété "ResultSet" n'est pas définie correctement, les paramètres ne sont pas définis correctement, ou la connexion n'est pas créé correctement.

quelqu'un pourrait-il suggérer ce qui pourrait ne pas aller?

Merci

Rob.

26
demandé sur slipsec 2010-01-05 22:36:45

6 réponses

la réponse est de changer la valeur du nom du paramètre dans l'écran de mappage du paramètre.

compte tenu de la requête suivante

SELECT Id, AnimalName FROM dbo.Farm WHERE Farm_id = ?

en supposant que mon paramètre est une Variable entière nommée User:: Farm_id

Choisissez les valeurs suivantes sur L'écran de mappage des paramètres

Variable Name  -   User::Farm_id
Direction      -   Input
Data Type      -   LONG
Parameter Name -   0
Parameter Size -   -1

à l'origine, le nom du paramètre sera "NewParameterName". Il suffit de changer cela à la position ordinale de votre marqueur variable ("?")

71
répondu John DaCosta 2010-08-27 05:31:25

Une chose que vous ne mentionnez pas votre type de connexion. Je suppose que vous ne grognonnez pas ADO.Net puisque le marquage de paramètre dans ce cas n'est pas un ?. Pour les autres types de connexion, les paramètres sont nommés comme suit:

ADO (pas ADO.Net) connexion: les noms de paramètres sont Param1, Param2...

Connexion ODBC: les noms de paramètres sont 1,2,3... Connexion OLEDB: les noms de paramètres sont 0,1,2...

pour les types de variables (ils sont différents dans la cartographie des paramètres l'article que dans tout autre domaine de la SSIS) je l'utilise généralement Long Int et j'ai généralement quitter la longueur de la valeur -1. Je crois Qu'un Long travail pour Int's et Bigint's.

3
répondu William Salzman 2010-01-06 11:56:56

si vous utilisez plus d'un paramètre, alors dans la fenêtre des tâches sql execute, allez à parameter mapping et définissez le nom du paramètre à 0,1,2,3....en fonction du nombre de paramètres et de leur taille jusqu'à -1.. Ce doit être utile pour résoudre votre problème.

2
répondu Heema 2010-11-17 16:35:11

Voir types de données SSIS.

   int = DT_I4  (4 byte integer) = Int32 variable
bigint = DT_I8  (8 byte integer)  = Int64 variable
1
répondu Damir Sudarevic 2010-01-05 19:43:37

assurez-vous que vous citez vos valeurs, et que vous n'avez pas de fautes de frappe dans les noms de vos colonnes.

0
répondu cyberconte 2010-01-05 19:41:13

lors de la définition des mappages de paramètre, les blancs qui suivent le nom du paramètre peuvent aussi causer ce message.

0
répondu Eugene P. 2015-09-23 02:48:15