Tôi đã tạo một dự án SSIS bằng Mô hình triển khai 2012 bao gồm một gói duy nhất. Trong gói đó, tôi đã thêm Trình quản lý kết nối OLE DB, chỉ nó vào tempdb và thả Tác vụ tập lệnh xuống khung vẽ. Tôi cũng đã bật ghi nhật ký rõ ràng bằng Trình quản lý kết nối OLE DB đó và ghi lại OnInformation
sự kiện.
Thông tin về SCR
Tôi đã cấu hình tác vụ kịch bản của mình để lấy hai tham số: System::ExecutionInstanceGUID
vàSystem::ServerExecutionID
tôi sẽ thừa nhận tại thời điểm này, tôi đã không nhận thấy biến thứ hai cho đến khi câu trả lời của Marian. Trong nhiệm vụ, tôi đưa ra 2 sự kiện Thông tin để tôi có thể nhận được các giá trị được ghi lại. Điều này nên được ghi vào cả bảng rõ ràng (dbo.sysssislog) và ghi nhật ký "miễn phí" (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;
}
Triển khai và thực hiện
Sau đó tôi đã triển khai dự án của mình đến một máy chủ và thực hiện nó.
Tôi đã mở Báo cáo hoạt động và nhấp vào SCR Fire info
chi tiết nhiệm vụ.
Mục được khoanh tròn màu đỏ cho thấy chúng tôi đang xem chi tiết cho Chiến dịch 8, như mong đợi. Các dòng được tô sáng làOnInformation
sự kiện làm nổi lên các giá trị của hai biến hệ thống đó. Cũng như mong đợi, giá trị System::ServerExecutionID
khớp với những gì trong báo cáo. Giá trị của nó System::ExecutionInstanceGUID
là vô nghĩa như mọi khi nhưng nó đã có mặt {3F515780-8062-40AA-B9EC-C320CBAC5EFD}.
Buộc tất cả lại với nhau
Bây giờ tôi đã có hai bản ghi khác nhau mà tôi muốn liên kết với nhau.
truy vấn sysssislog
Chạy truy vấn này đã kéo các hàng có liên quan từ bảng ghi nhật ký trường cũ.
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;
Kết quả trông như
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.
danh mục.operation_messages truy vấn
Chạy truy vấn này đối với các cửa hàng SSISDB cho thấy tất cả các thông điệp mà là trong báo cáo trên và cũng khẳng định tôi có thể liên kết các giá trị trong message
để operation_id
cũng như trên đểdbo.sysssislog.executionid
SELECT
OM.*
FROM
catalog.operation_messages AS OM
WHERE
OM.operation_id = 8;
Những kết quả đó là
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
Gói (lại
Khi gói được thực thi bên ngoài ngữ cảnh của danh mục SSISDB (còn gọi là qua SSDT-BI hoặc dòng lệnh đến .ispac), giá trị của System::ServerExecutionID
sẽ là 0. Điều đó có ý nghĩa, nhưng các độc giả trong tương lai sẽ sử dụng LEFT OUTER THAM GIA khi liên kết sysssislog với catalog.operation_messages nếu bạn muốn bắt tất cả thực thi của gói.
Hat tip, lời cảm ơn nồng nhiệt của tôi và tín dụng câu trả lời gửi đến Marian vì đã đưa tôi đi đúng hướng. Đưa ra lựa chọn giữa việc lưu trữ GUID (16 byte) và bigint (8 byte) trong bảng ghi nhật ký tóm tắt của tôi, đó là điều không có gì phải đắn đo đối với tôi: làm ơn tăng số nguyên lớn một cách đơn điệu.