2010-01-05 28 views
19

Tengo una tarea SQL que necesita ejecutar una actualización simple para actualizar una sola fila.Tarea SQL de SSIS: "No se reconoce el nombre del parámetro"

he puesto a SQLStatement:

update agency set AgencyLastBatchSeqNo = ? where agencyID = ? 

En la página de asignación de parámetros que di conjunto de parámetros Parámetro 0 y 1 a las variables que conozco contiene los valores correctos. También he establecido los valores del Nombre del parámetro correctamente.

En la base de datos, la columna AgencyLastBatchSeqNo es una int, AgencyID es una gran int. ¿Alguien tiene una referencia para encontrar el mapa de los tipos de datos en SSIS? He adivinado en SHORT para el int y LONG para el gran int.

Cuando ejecuto la tarea que me sale el siguiente error:

[Execute SQL Task] Error: Executing the query "update agency set AgencyLastBatchSeqNo = ? where AgencyID = ?" failed with the following error: "Parameter name is unrecognized.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

Podría alguien por favor sugerir lo que puede estar mal?

Gracias

Rob.

Respuesta

59

La respuesta a esto es cambiar el valor del Nombre del parámetro en la pantalla Asignación de parámetros.

Dada la siguiente consulta

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

Asumiendo mi parámetro es un número entero variable de usuario llamado :: Farm_id
seleccionar los valores siguientes en la pantalla de asignación de parámetros

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

originalmente el nombre de parámetro ser "NewParameterName". Simplemente cambie esto a la posición ordinal de su marcador de variable ("?")

+2

+1 ¡Me salvó! ¡Muchas gracias! – Legend

+0

gracias John tu respuesta fue genial, :) –

+0

Estaba poniendo el NOMBRE del parámetro en Nombre del parámetro (shock horror) y me estaba arrancando el pelo. – jhowe

0

Asegúrese de estar citando sus valores, y de que no tiene errores tipográficos en los nombres de sus columnas.

1

Ver SSIS data types.

int = DT_I4 (4 byte integer) = Int32 variable 
bigint = DT_I8 (8 byte integer) = Int64 variable 
3

Una cosa que no mencionas es tu tipo de conexión. Supongo que no está utilizando ADO.Net dado que el marcado de parámetros en ese caso no es un?. Para los otros tipos de conexión, los parámetros se nombran de la siguiente manera:
Conexión ADO (no ADO.Net): los nombres de los parámetros son Param1, Param2 ...
Conexión ODBC: los nombres de los parámetros son 1,2,3 ... Conexión OLEDB: los nombres de los parámetros son 0,1,2 ...

Para los tipos de variables (son diferentes en la sección de mapeo de parámetros que en cualquier otra área de SSIS) Normalmente uso Long para Int y dejo típicamente el longitud establecida en -1. Creo que un Long funcionará tanto para Int's como para Bigint's.

2

Si está utilizando más de 1 parámetro, en la ventana de ejecución de la tarea sql vaya a la asignación de parámetros y establezca el nombre del parámetro en 0,1,2 , 3 .... dependiendo del número de parámetro y el tamaño del parámetro a -1 .. Esto debe ser útil para resolver su problema.

0

Al definir las asignaciones de parámetros, cualquier espacio en blanco posterior después del nombre del parámetro puede causar este mensaje también.

Cuestiones relacionadas