Solución:
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 = ?
Suponiendo que mi parámetro es una variable entera llamada User :: Farm_id
Elija los siguientes valores 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 del parámetro será “NewParameterName”. Simplemente cambie esto a la posición ordinal de su marcador de variable (“?”)
Una cosa que no mencionas es tu tipo de conexión. Supongo que no está utilizando ADO.Net ya que la marca del parámetro en ese caso no es un?. Para los otros tipos de conexión, los parámetros se denominan 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 normalmente dejo la longitud establecida en -1. Creo que Long funcionará tanto para Int’s como para Bigint’s.
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 en -1. Esto debe ser útil para resolver su problema.