단일 패키지로 구성된 2012 배포 모델을 사용하여 SSIS 프로젝트를 만들었습니다. 이 패키지에서 OLE DB 연결 관리자를 추가하고 tempdb를 가리키고 스크립트 작업을 캔버스에 떨어 뜨 렸습니다. 또한 해당 OLE DB 연결 관리자를 사용하여 명시 적 로깅을 설정하고 OnInformation
이벤트를 캡처했습니다 .
SCR 화재 정보
내가 잡아 두 개의 매개 변수를 내 스크립트 작업을 구성 : System::ExecutionInstanceGUID
그리고 System::ServerExecutionID
나는이 시점에서 인정할 것이다, 나는 한 하지 마리아의 대답 때까지 두 번째 변수를 나타났습니다. 작업 내에서 2 개의 정보 이벤트를 발생시켜 값을 기록 할 수 있습니다. 이는 명시 적 테이블 (dbo.sysssislog)과 "무료"로깅 (catalog.operation_messages) 모두에 기록되어야합니다.
public void Main()
{
bool fireAgain = true;
string description = string.Empty;
string variable = string.Empty;
string value = string.Empty;
variable = "System::ServerExecutionID";
value = Dts.Variables[variable].Value.ToString();
description = string.Format("{0}: {1}", variable, value);
Dts.Events.FireInformation(0, "Reporting", description, string.Empty, 0, ref fireAgain);
variable = "System::ExecutionInstanceGUID";
value = Dts.Variables[variable].Value.ToString();
description = string.Format("{0}: {1}", variable, value);
Dts.Events.FireInformation(0, "Reporting", description, string.Empty, 0, ref fireAgain);
Dts.TaskResult = (int)ScriptResults.Success;
}
배포 및 실행
그런 다음 프로젝트를 서버에 배포하고 실행했습니다.
작업 보고서를 열고 SCR Fire info
작업 세부 정보를 클릭했습니다 .
빨간색 원으로 표시된 항목은 예상대로 오퍼레이션 8에 대한 세부 사항을보고 있음을 나타냅니다. 강조 표시된 줄은이 OnInformation
두 시스템 변수의 값을 버블 링 한 이벤트입니다. 또한 예상 한대로 값이 System::ServerExecutionID
보고서에있는 것과 일치했습니다. 그 가치는 System::ExecutionInstanceGUID
항상 의미가 없었지만 {3F515780-8062-40AA-B9EC-C320CBAC5EFD}에있었습니다.
모두 함께 묶어
이제 서로 묶고 싶은 두 개의 다른 통나무가있었습니다.
sysssislog 쿼리
이 쿼리를 실행하면 구식 로깅 테이블에서 관련 행이 철회되었습니다.
SELECT
L.event
, L.source
, L.message
FROM
dbo.sysssislog AS L
WHERE
L.executionid = '{3F515780-8062-40AA-B9EC-C320CBAC5EFD}'
ORDER BY
L.id ASC;
결과는 다음과 같았다
event source message
PackageStart ParameterTest Beginning of package execution.
OnInformation SCR Fire info System::ServerExecutionID: 8
OnInformation ParameterTest System::ServerExecutionID: 8
OnInformation SCR Fire info System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD}
OnInformation ParameterTest System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD}
PackageEnd ParameterTest End of package execution.
catalog.operation_messages 쿼리
위의 보고서에 있었고, 또한 내가의 값을 연결할 수 확인 모든 메시지 SSISDB 카탈로그에 대해이 쿼리를 보였다 실행 message
에 operation_id
뿐만 이상으로 잘dbo.sysssislog.executionid
SELECT
OM.*
FROM
catalog.operation_messages AS OM
WHERE
OM.operation_id = 8;
그 결과는
operation_message_id operation_id message_time message_type message_source_type message extended_info_id
30 8 2013-04-02 21:02:34.1418917 -05:00 10 30 ParameterTest:Validation has started. NULL
31 8 2013-04-02 21:02:34.1738922 -05:00 10 40 SCR Fire info:Validation has started. NULL
32 8 2013-04-02 21:02:34.1768872 -05:00 20 40 SCR Fire info:Validation is complete. NULL
33 8 2013-04-02 21:02:34.1788903 -05:00 20 30 ParameterTest:Validation is complete. NULL
34 8 2013-04-02 21:02:34.3349188 -05:00 30 30 ParameterTest:Start, 9:02:34 PM. NULL
35 8 2013-04-02 21:02:34.4009253 -05:00 30 40 SCR Fire info:Start, 9:02:34 PM. NULL
36 8 2013-04-02 21:02:34.4009253 -05:00 10 40 SCR Fire info:Validation has started. NULL
37 8 2013-04-02 21:02:34.4019251 -05:00 20 40 SCR Fire info:Validation is complete. NULL
38 8 2013-04-02 21:02:34.4219283 -05:00 70 40 SCR Fire info:Information: System::ServerExecutionID: 8 NULL
39 8 2013-04-02 21:02:34.4259295 -05:00 70 40 SCR Fire info:Information: System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD} NULL
40 8 2013-04-02 21:02:34.4409316 -05:00 40 40 SCR Fire info:Finished, 9:02:34 PM, Elapsed time: 00:00:00.031. NULL
41 8 2013-04-02 21:02:34.4419388 -05:00 40 30 ParameterTest:Finished, 9:02:34 PM, Elapsed time: 00:00:00.125. NULL
마무리
패키지가 SSISDB 카탈로그 컨텍스트 (일명 SSDT-BI 또는 .ispac에 대한 명령 행을 통해) 외부에서 실행될 때의 값은 System::ServerExecutionID
0입니다. 의미가 있지만 향후 독자는 LEFT OUTER JOIN을 사용합니다. 패키지의 모든 실행 을 잡으려면 sysssislog를 catalog.operation_messages에 연결할 때 .
모자 팁, 진심으로 감사와 답변 크레딧은 Marian에게 정확한 길을 안내해줍니다. 요약 된 로깅 테이블에 GUID (16 바이트)와 bigint (8 바이트)를 저장할 수 있다는 점을 고려할 때 큰 정수는 아닙니다.