2014-12-12 4 views
-1

Excel 데이터를 SQL DB로 가져 오기 위해 SSIS 패키지를 사용하고 있습니다. 구성 파일에서 다음 변수를 사용하고 있습니다.SSIS 패키지에서 동적 연결 문자열이 작동하지 않습니다. 2008R2

Name     scope  DataType Value 
---------------------------------------------------- 
DBName    package String  DB_Master 
Password    package String  xx 
UserName    package String  sa 
ServerName   package String  xxx.xxx.x.xx 
SqlConnectionString package String  DataSource=xxx.xxx.x.xxx;UserID=sa;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Initial Catalog=DB_Master;Password=xx 

마우스 오른쪽 버튼으로 누른 다음 값이

EvaluateAsExpression -True 
Expression    -"DataSource=" + @[User::ServerName] + ";UserID=" + @[User::UserName] + ";Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Initial Catalog=" + @[User::DBName] + ";Password=" + @[User::Password] 

이 후 내가있는 DBNAME을 변경하려면 패키지 파일을 배포 지정 아래의 값이 변수 속성 창을 SqlConnectionString에서

ConnectionString - Initial Catalog=DB_Master;DataSource=xxx.xxx.x.xxx;UserID=sa;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False; 

DelayValidation - True 

Expressions  -ConnectionString - @[User::SqlConnectionString] 

를 할당 아래의 속성 창을 클릭 OLEDB은 ConnectionManager 클릭 SqlConnectionString DB_Master를 Master로 설정하지만 패키지가 DB_Master의 파일을 실행합니다.

그리고 내가 198.152.1과 같은 잘못된 ServerName을 제공하지만 패키지가 성공적으로 실행 된 경우에도 마찬가지입니다.

내가 실수 한 부분을 알려주십시오. 뭐가 잘못 됐어?

+0

문제점은 무엇인지 모르겠지만 연결 문자열 속성을 _just_ 지정하여이를 단순화 할 수 있습니다. 이미 다른 모든 값을 포함하고 있습니다. 문자열 연결 표현식이 필요 없으며 구성에서 직접 연결 문자열을 할당하면됩니다. 그런 다음 해당 설정에서 DB를 변경하십시오. –

+1

연결 문자열에서 dbName을 어떻게 변경하고 있습니까? 연결 고리 또는 변수를 업데이트하고 있습니까? 변수의 값을 어떻게 변경하고 있습니까? 구성?/set 사용? –

+0

@ MarkWojciechowicz DBName 변수를 사용하여 연결 문자열의 dbname을 변경합니다. 연결 문자열을 업데이트하는 방법을 모르겠습니다. 연결 문자열에 값을 입력하여 변수 값을 변경합니다. – Gurunathan

답변

0

@gurunathan은 구성이 설정되지 않는다는 경고 메시지를 출력합니다. configs가 없으면 대신 디자인 시간 값이 사용됩니다.

매니페스트와 함께 패키지를 배포하면 구성 파일이 자동으로 배포되지 않습니다. 대상 서버의 dtsconfig 파일을 패키지에서 지정한 경로로 복사해야합니다. 나는. C : \ MySsisConfigs \ configfile.dtsconfig

또는 간접 구성에 환경 변수를 사용할 수 있습니다. 따라서 다른 환경에 쉽게 배포 할 수 있습니다. 그것에 관한 참조는 Here's입니다.

환경 변수를 추가하기 시작하면 궁극적으로 SSIS 또는 SQL 에이전트와 관련된 서비스를 다시 시작하십시오. 서비스는 시작할 때 환경 변수의 값을 캐시합니다. - 연결 문자열은 다른 변수를 기반으로하는 표현식으로 설정되었지만 패키지 구성에 의해 설정되었습니다. - 연결 문자열이 잘못되어 디자인 시간 값이 사용되고있었습니다. 데이터 소스는 DataSource 였고 보안은 통합 보안으로 설정되었지만 사용자 이름과 암호도 전달되었습니다.

팁은 연결 관리자에서 패키지 구성을 사용 중이며 패키지를 열 때 연결 관리자가 손상된 경우 뭔가 잘못되었습니다.

+0

아래 링크와 같은 변수를 사용하고 있습니다. https://anothersqlgeek.wordpress.com/2013/03/28/ssis-dynamic-connections-part-1/comment-page-1/#comment-48 그러나 그것은 나를 위해 작동하지 않습니다. – Gurunathan

+0

패키지를 실행할 때 경고가 있습니까? 그렇다면 설정과 관련이 있습니까? 대상 서버의 구성 파일은 어디에 있습니까? –

+0

실행 중 경고가 표시되지 않습니다. 프로젝트를 빌드 한 후 bin \ Deployment에있는 Configuration (dtsconfig) 파일. Default 프로젝트 폴더 내에 설정 파일을 생성합니다. – Gurunathan

0

내 문제의 해결책을 찾았습니다. 마크 Wojciechowicz의 도움으로. Mark 감사합니다.

아래 변경.

  1. 은 (False로 EvaluateAsExpression 설정)
  2. 이 변수을 ConnectionString을위한 식을 제거 연결 문자열에 연결 문자열
  3. 넣어 공간 사이 데이터 소스에서 통합 보안를 제거
  4. 다음 변수를 삭제하십시오. - ServerName, 사용자 이름, 암호, DBName.

    데이터 원본 = xxx.xxx.x.xxx; 사용자 ID = XX, 제공 = SQLNCLI10.1; 자동 번역 = 거짓; 초기 카탈로그 = 테스트; 암호 = XXXXXXX

지금은 일하고 및 유효하지 않은 사용자 ID 및 비밀번호에 대한 오류를 표시합니다.