Comment passer de la variable comme paramètre dans l'Exécution de Tâche SQL SSIS?
J'ai package ssis dans que je vais prendre les valeurs de fichier plat et l'insérer dans la table.
J'ai pris une Tâche d'Exécution SQL dans la création d'un temptable
CREATE TABLE [tempdb].dbo.##temptable
(
date datetime,
companyname nvarchar(50),
price decimal(10,0),
PortfolioId int,
stype nvarchar(50)
)
Insert into [tempdb].dbo.##temptable (date,companyname,price,PortfolioId,stype)
SELECT date,companyname,price,PortfolioId,stype
FROM ProgressNAV
WHERE (Date = '2011-09-30') AND (PortfolioId = 5) AND (stype in ('Index'))
ORDER BY CompanyName
Maintenant dans la requête ci-dessus j'ai besoin de passer (Date = '2011-09-30') AND (PortfolioId = 5) AND (stype in ('Index'))
ces 3 paramètre à l'aide de la variable de nom, j'ai créé des variables dans le paquet afin que je devienne dynamique.
Vous devez vous connecter pour publier un commentaire.
Dans votre Tâche d'Exécution SQL, assurez-vous que SQLSourceType est Entrée, puis votre Instruction SQL est le nom de la procédure stockée, avec questionmarks pour chaque paramètre de la proc, comme suit:
Cliquez sur le paramètre de mappage dans la colonne de gauche et d'ajouter chaque paramètre de votre stockées proc et de la carte à votre SSIS variable:
Maintenant lors de l'exécution de cette tâche, il va passer les variables SSIS à la procédure stockée.
OLE DB
dans Type de Connexion, mais vous utilisez@something
comme ParameterName. Est-ce fonctionne vraiment? Si oui, pourquoi? Ici: msdn.microsoft.com/en-us/ms140355.aspx je peux lire, que je devrais utiliser0,1,2,3..
comme ParameterName.L'EXCEL et ole DB connexion gestionnaires utilisent les noms de paramètres 0 et 1.
J'ai été en utilisant une connexion oledb et le gaspillage de quelques heures à essayer de comprendre la raison pour laquelle la requête a pas de travail ou en prenant les paramètres. l'explication ci-dessus a beaucoup aidé
Merci beaucoup.
Avec @PaulStock réponse, en Fonction de votre type de connexion, vos noms de variable et de SQLStatement/SQLStatementSource Changements
https://docs.microsoft.com/en-us/sql/integration-services/control-flow/execute-sql-task
SELECT
,INSERT
,UPDATE
, etDELETE
commandes incluent fréquemment des clauses where pour spécifier des filtres qui définissent les conditions de chaque ligne dans les tables source doit satisfaire pour être admissible pour une commande SQL. Les paramètres de fournir les valeurs de filtre dans les clauses where.Vous pouvez utiliser des marqueurs de paramètres à fournir dynamiquement les valeurs de paramètre. Les règles pour lesquelles paramètres de marques et de noms de paramètre peut être utilisé dans l'instruction SQL dépendent du type de connexion du gestionnaire de l'Exécution SQL utilise.
Le tableau suivant répertorie des exemples de la commande SÉLECTIONNER par type de gestionnaire de connexions. L'instruction INSERT, UPDATE, et DELETE sont similaires. Les exemples d'utilisation SÉLECTIONNEZ pour retourner les produits de la table Produit dans AdventureWorks2012 qui ont un ProductID supérieur et inférieur aux valeurs spécifiées par les deux paramètres.
EXCEL, ODBC et OLEDB
ADO
ADO.NET
Les exemples nécessitent des paramètres qui ont les noms suivants:
L'EXCEL et ole DB connexion gestionnaires utilisent les noms de paramètres 0 et 1. Le type de connexion ODBC utilise 1 et 2.
Le type de connexion ADO peut utiliser deux noms de paramètres, tels que Param1 et Param2, mais les paramètres doivent être mappés par leur position dans la liste des paramètres.
L'ADO.NET type de connexion utilise les noms de paramètres @parmMinProductID et @parmMaxProductID.
Un peu en retard à la fête, mais c'est la façon dont je l'ai fait pour une insertion:
DECLARE
états initialiser les variables par défaut (mal) des valeurs, et laSET
états écraser les valeurs par défaut pour les valeurs qui ont été transmises.