2017-12-20 13 views
1

데이터 형식이 String 인이라는 Project 매개 변수가있는 SSIS 매개 변수가 있습니다. 자체 변수는

<dbs> 
    <data> 
     <db>database1</db> 
     <store>store1</store> 
    </data> 
    <data> 
     <db>database2</db> 
     <store>store2</store> 
    </data> 
</dbs> 

하드 코딩 XML 문서, 즉를 : 포함하고 나는이 데이터베이스와 해당 매장을 반복 어디 SSIS에서 foreach loop에서 사용.

내 foreach 루프는 다음과 같이 구성되어 있습니다 :

DocumentSourceType: Variable 
DocumentSource: $Project::Databases 
EnumerationType: ElementCollection 
OuterXPathStringSourceType: DirectInput 
OuterXPathString: /dbs/* 
InnerElementType: NodeText 
InnerXPathStringSourceType: DirectInput 
InnerXPathString: * 

나는 다음 User::StoreKey에 해당하는 변수 User::DatabaseName 인덱스 1에 인덱스 0을 가지고 Variable Mappings을 사용하여 해당합니다.

SSIS에서 패키지를 실행할 때으로 작동합니다.

Failed to lock variable "$Project::Databases" for read access with error 0xC0010001 "The variable cannot be found". This occurs when an attempt is made to retrieve a variable from the Variables Collection on a container during execution of the package, and the variable is not there. The Variable name may have changed or the variable is not being created

하지만 변수 해야한다 : 나는이 값을 사용하는 SQL 문 변수 내가 SQL Agent Job 내가 오류가 발생하여이를 실행하려고 할 때 문제가 올바른 출력 등

을 제공합니다 생성 된 - 단지 하드 코딩 된 변수 일뿐입니다. 나는이 문제를 가능한 솔루션을 검색 좀

그렇게하고있다 :

변수는 문자열 형식이 아닌 (내 경우에 )

또는

사용자 어떤에서 SQL Agent 작업이 올바른 사용 권한을 가지고 있지 않은 경우 실행됩니다 (경우에 따라 데이터를 읽는 데이터베이스의 sysadmin이 실행하고 msdb와 SSISDB).

+0

어떤 배포 모델을 사용하십니까? –

+0

@ digital.aaron Visual Studio SSIS 2016에서'Deploy package ... '를 선택하여 각 패키지를 마우스 오른쪽 버튼으로 클릭하기 만하면됩니다. 논리적 인 것으로 보이며 다른 배포 옵션을 테스트합니다. 각 패키지 대신 전체 프로젝트를 배포해야합니까? 집에서 환경에 접근 할 수 없기 때문에 지금은 테스트 할 수 없습니다. – Cenderze

답변

1

SSIS는 프로젝트 배포 모델을 사용하여 패키지를 배포 할 때만 Project 매개 변수를 사용합니다. 패키지 배포 모델을 사용하는 경우 프로젝트 매개 변수 대신 구성을 사용하도록 패키지를 변경해야합니다.

+0

감사! 이것을 테스트하는 방법을 찾았습니다. – Cenderze