web-dev-qa-db-fra.com

SSIS ODBC: Mapping Résultat Set Colonnes sur les variables renvoie une erreur "La valeur ne tombe pas dans la gamme attendue"

Dans SSIS 2012, j'utilise une "tâche SQL exécutée" pour appeler une procédure stockée qui renvoie une seule ligne avec deux colonnes. Je voudrais mapper ce résultat défini sur deux variables utilisateur SSIS. Devrait être facile, non? Cela fonctionne lorsque j'utilise un gestionnaire de connexion ADO.NET ou OLDED, mais échoue lorsque j'ai utilisé un ODBC Connection Manager.

Lorsque je mappe d'utiliser ODBC, SSIS renvoie l'exception d'exécution suivante:

[Execute SQL Task] Error: An error occurred while assigning a value to variable "MyString": "Value does not fall within the expected range."

Les colonnes SQL Server ont un type de données NVARCHAR (50). J'ai aussi essayé Varcharate (50) et Char (1) en vain. La variable SSIS "mystring" a un type de données de chaîne.

Result Set mapping in SSIS .

Le ODBC CODE de la connexion est 1252 et la collation SQL Server 2012 est SQL_Latin1_General_CP1_CI_AS.

J'utilise une base de données SQL Server 2012.

Voici la configuration générale de la tâche pour référence:

SSIS Execute SQL Task - General tab .

Est-ce que cela est possible de faire à l'aide d'un ODBC connexion? Ou est-ce un autre type de fonctionnalité qui n'est tout simplement pas pris en charge pour ODBC dans SSIS 2012?

2
Brandon S

Avec ODBC dans la tâche SQL, la première position est 1 non pas 0, cela guérit totalement mon problème. Notez également que ODBC ne semble pas reconnaître l'alias aussi Ne pas utiliser l'alias comme résultat. Il semble que le message "Range attendu" se réfère au positionnement du jeu de résultats; c'est-à-dire "0" ou un nom n'est pas vu dans la gamme de positions variables (telles que 1 et 2 si vous avez Deux sélectionnés, 0 ou 3 sont hors limites)

2
JPrimrose

Oui, vous pouvez le faire avec un ODBC Connection. Toutefois, vous n'avez pas de flexibilité avec votre ensemble de résultats lors de l'utilisation de ODBC. Essayer de changer votre nom de résultat "mynvarchar1" au numéro "0 "Et changer" mynvarchaR2 "au nombre" 1 ". ODBC souhaite référence à ces colonnes comme 0, 1, 2, etc.

1
LCat