web-dev-qa-db-ja.com

SQLタスクSSISの実行で変数をパラメーターとして渡す方法

フラットファイルから値を取得してテーブルに挿入するという点で、ssisパッケージがあります。

私は1つのtemptableを作成するという点で1つのSQL実行タスクを取りました

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

今、上記のクエリで、変数名を使用して(Date = '2011-09-30') AND (PortfolioId = 5) AND (stype in ('Index'))これらの3つのパラメータを渡す必要があります。パッケージに変数を作成して、動的にします。

48
Neo

SQL実行タスクで、SQLSourceTypeがDirect Inputに設定されていることを確認します。次に、SQLステートメントがストアドプロシージャの名前であり、次のように、プロシージャの各パラメータに疑問符が付きます。

enter image description here

左の列のパラメーターマッピングをクリックして、ストアドプロシージャから各パラメーターを追加し、SSIS変数にマップします。

enter image description here

このタスクを実行すると、SSIS変数がストアドプロシージャに渡されます。

91
PaulStock

ExcelおよびOLED DB接続マネージャーはパラメーター名0および1を使用します

私はoledb接続を使用しており、クエリが機能しなかった理由を理解しようとしたり、パラメーターを取得したりするのに数時間を費やしていました。上記の説明は大いに役立ちました。

18
user2907295

@PaulStockの答えとともに、接続の種類、変数名、およびSQLStatement/SQLStatementSourceの変更に応じて

https://docs.Microsoft.com/en-us/sql/integration-services/control-flow/execute-sql-taskhttps://docs.Microsoft.com/en-us/sql/integration-services/control-flow/execute-sql-task

7
Sam

パーティーに少し遅れましたが、これは私が挿入のためにそれをした方法です:

DECLARE @ManagerID AS Varchar (25) = 'NA'
DECLARE @ManagerEmail AS Varchar (50) = 'NA'
Declare @RecordCount AS int = 0

SET @ManagerID = ?
SET @ManagerEmail = ?
SET @RecordCount = ?

INSERT INTO...
3
Steve L