2014-11-13 8 views
-1

저는 데이터웨어 하우스에서 일하고 있습니다.SSIS의 SQL 작업에서 매개 변수를 사용하는 방법?

날짜 항목 (예 : SSAS 마법사가 있지만 내 SSIS ETL 프로세스에 직접 작성)을 작성하여 로드맵에 스크립트를 작성했습니다. 이것은 SSMS에서 잘 작동하고 매개 변수를 사용하지 않고 SSIS의 T-SQL 작업에서 직접 작동합니다. 이 스크립트는 ResultSet을 제공하지 않습니다. 이것은 테이블에 데이터를 삽입하는 루프 일뿐입니다.

다음은 내 쿼리의 간단한 모양입니다.

USE [MySQLServerDatabase] 
GO 

-- Some parameters used by the script. 
DECLARE @PREFIX_YEAR_NAME  [nvarchar](50) = 'Year '; 
DECLARE @PREFIX_QUARTER_NAME [nvarchar](50) = 'Q'; 
DECLARE @PREFIX_WEEK_NAME  [nvarchar](50) = 'W'; 
DECLARE @PREFIX_MONTH_NAME  [nvarchar](50) = 'M'; 
DECLARE @DefaultBeginDate  [datetime] = '01/01/2000'; 
DECLARE @Date     [datetime]; 

SET @Date = @BeginDate 

WHILE @Date <= @EndDate 
    BEGIN 
     -- ... 
     -- INSERT INTO ... 
    END 

-- ... 

그러나 좀 더 사용하기 쉽고 유지 관리하기 위해 SSIS 변수를 스크립트에서 직접 사용하고 싶습니다.

내 params (Project.params 파일)입니다. 내 스크립트가 모두 작동해야합니다 :

enter image description here

을 그리고, 나는 내 SQL 쿼리를 포함하는 "SQL 작업 구성 요소를 실행"(OLEDB 연결, 직접 입력 방식)을 추가했다.

enter image description here

어떻게 SQL 쿼리 매개 변수를 사용하는 : 내 5 개 매개 변수를 만들어? 스크립트의 변수와 동일한 이름을 사용하려고했으나 작동하지 않습니다. 인덱스 (0,1,2 등) 이름을 사용하고 '?' 스크립트에서 나는 작동하지 않습니다.

'?'을 사용할 때의 오류는 다음과 같습니다. 매개 변수 :

Error: 0xC002F210 at Execute SQL Task, Execute SQL Task: Executing the query " DECLARE @PREFIX_YEAR_NAME nvarchar = ?; D..." failed with the following error: "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. Task failed: Execute SQL Task

어떤 문제를 해결할 수 있습니까?

감사합니다.

+0

?와 함께 사용한 sql 스크립트를 게시 할 수 있습니까? 매개 변수로? –

답변

0

이 쿼리를 저장 프로 시저에 넣을 수 있습니다. SQLStatement의 SQL Task Editor에서 exec [sch]. [sp_name]?,?,? ...,? (각 매개 변수는 하나의 매개 변수입니다). 매개 변수 이름 열의 '매개 변수 매핑'탭에서 숫자 0, 1, 2 ... n (저장 프로 시저의 params 순서)을 사용할 수 있습니다.

+0

저장 프로 시저를 사용하는 유일한 방법은 그것을 사용하는 것입니까? 왜냐하면 나는 저장 프로 시저를 사용하지 않고 똑같은 일을했기 때문에 실패했습니다. – K4timini

+0

@ K4timini 아니요, 이것은 procs에 국한되지 않습니다. Ad Hoc SQL 문과 함께 작동합니다. 오류가 무엇입니까? –

+0

SQL 작업 편집기에 '결과 세트'옵션이 있습니다. '없음'으로 설정되어 있습니까? –

관련 문제