2010-07-22 7 views
2

J'ai plusieurs variables dans un package SSIS que j'aimerais insérer dans une table.ssis - INSÉRER des valeurs de variables dans une table

exemple: -

@financialMonth, @Status, @Comments 

Les variables ont été renseignés sur le chemin avec des valeurs basées sur, nom de fichier, lookups dates, etc, et je veux les stocker dans une table de résultats.

Est-ce que la tâche d'exécution SQL est utilisée comme cela? Dois-je appeler un sproc et passer ces variales en tant que paramètres?

J'ai essayé de mettre le T-SQL dans la propriété SQLStatement

INSERT INTO FilesProcessed 
    (ProcessedOn, ProviderCode, FinancialMonth, 
    FileName, Status, Comments) 
SELECT  GETDATE(), 'ABC' , 201006, 
    'ABC_201005_Testology.csv', 
    'Imported','Success' 

je suit essayé hardcoding les valeurs ci-dessus pour le faire fonctionner

Ce sont les colonnes du tableau I » m insertion dans

Column_name  Type   Computed Length 
fileID   int   no   4 
ProcessedOn  datetime  no   8 
ProviderCode nchar  no   6 
FinancialMonth int   no   4 
FileName  nvarchar  no  510 
Status   nvarchar  no   40 
Comments  nvarchar  no  510 

Ceci est le code d'expression qui alimente la propriété SQLStatementSource

"INSERT INTO FilesProcessed (ProcessedOn, ProviderCode, FinancialMonth, 
    FileName, Status, Comments) SELECT  GETDATE() AS ProcessedOn, '" 
    + @[User::providerCode] + "' , " 
    + (DT_STR,6,1252)@[User::financialMonth] + ", '" 
    + @[User::fileName] + "', 'Imported' AS Status,'Successfully' AS Comments " 

Malheureusement je manque quelque chose, et ne peut pas tout à fait le faire fonctionner.

The Error message I'm getting is ... Error: 0xC002F210 at Log entry in FilesProcessed, Execute SQL Task: Executing the query "INSERT INTO FilesProcessed (ProcessedOn, ProviderCode, FinancialMonth, FileName, Status, Comments) SELECT
GETDATE(), 'ABC' , 201006, 'DAG_201005_Testology.csv', 'Imported','Successfully'" failed with the following error: "An error occurred while extracting the result into a variable of type (DBTYPE_I2)". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

S'il vous plaît

a). Indiquez si la tâche d'exécution SQL est la façon de faire ce que je veux faire.

b). Donnez-moi des conseils ou des pièges à surveiller et à vérifier.

Merci d'avance.

+2

On dirait que cela devrait fonctionner selon ce que je me souviens de SSIS. (bien que, de toute évidence, le code que vous avez posté n'utilise pas du tout les variables) Quelle erreur obtenez-vous? –

+0

essayez de supprimer "as status" et "as comments" –

+0

J'ai collé le code d'expression que j'ai utilisé pour créer le T-SQL. J'essayais de coder en dur le T-SQL pour voir si le code le plus simple fonctionnait. – cometbill

Répondre

4

OK, voici ce que je faisais.

J'ai créé une tâche d'exécution SQL et configuré, ainsi: -

General Tab 
    ConnectionType = OLE DB 
    SQLSourceType = Direct Input 
    SQLStatement = (left blank) 
    BypassPrepare = True 
    ResultSet = None 

Parameter Mapping 
    (none - leave blank) 

Result Set 
    (none - leave blank) 

Expressions 
    SQLStatementSource = "INSERT INTO FilesProcessed (ProcessedOn, ProviderCode, FinancialMonth, FileName, Status, Comments) SELECT GETDATE(), '" + @[User::providerCode] + "' , " + (DT_STR,6,1252)@[User::financialMonth] + ", '" + @[User::fileName] + "', 'Import - Success', '" + @[User::fileComments] + "'" 

Alors tant que je mis en place les variables et les remplir dans la fenêtre de variables (l'éditeur d'expression ne vous laissera pas enregistrer une expression cela fait référence à une variable qui n'existe pas Gardez le bloc-notes à portée de main pour stocker le contenu pendant que vous retournez et éditez la fenêtre de variables;)

Construisez l'expression lentement, en utilisant le bouton Parse expression régulièrement pour vérifier .

0

Quelques suggestions spéculatives

  1. Le message d'erreur indique Une erreur est survenue lors de l'extraction le résultat dans une variable de type (DBTYPE_I2). Mais ceci est une instruction d'insertion directe. Il ne devrait pas y avoir de résultat sauf pour les lignes affectées. Avez-vous défini des mappages de paramètres à Output? Et si vous essayez d'exécuter la requête SQL directement à partir du message d'erreur dans le studio de gestion, que se passe-t-il si vous essayez d'exécuter la requête SQL à partir du message d'erreur? Est-ce que cela vous donne une erreur?

0

Dans la définition de tableau ci-dessus FinancialMonth comme type de données int comme

FinancialMonth int no 4

tout inseting coulée comme

(DT_STR, 6,1252) @ [User :: financialmonth]

Je pense que c'est purement un type de données mism Atch avec la définition de la table cible.

grâce

prav

Questions connexes