Saya membuat proyek SSIS menggunakan Model Penerapan 2012 yang terdiri dari satu paket. Dalam paket itu, saya menambahkan OLE DB Connection Manager, mengarahkannya ke tempdb dan menjatuhkan Script Task ke kanvas. Saya juga menyalakan logging eksplisit menggunakan OLE DB Connection Manager itu dan menangkap OnInformation
acara tersebut.
Info Kebakaran SCR
Saya mengkonfigurasi tugas skrip saya untuk mengambil dua parameter: System::ExecutionInstanceGUID
dan System::ServerExecutionID
saya akui saat ini, saya belum memperhatikan variabel kedua hingga jawaban Marian. Di dalam tugas, saya mengangkat 2 peristiwa Informasi sehingga saya bisa mendapatkan nilai-nilai yang direkam. Ini harus login ke tabel eksplisit (dbo.sysssislog) dan "bebas" logging (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;
}
Menyebarkan dan mengeksekusi
Saya kemudian menyebarkan proyek saya ke server dan menjalankannya.
Saya membuka Laporan Operasi dan mengklik SCR Fire info
rincian tugas.
Item yang dilingkari merah menunjukkan bahwa kami sedang melihat detail untuk Operasi 8, seperti yang diharapkan. Garis yang disorot adalah OnInformation
peristiwa yang menggelembungkan nilai-nilai dari kedua variabel sistem. Juga seperti yang diharapkan, nilai System::ServerExecutionID
cocok dengan apa yang ada di laporan. Nilai System::ExecutionInstanceGUID
tidak ada artinya seperti biasa tetapi hadir {3F515780-8062-40AA-B9EC-C320CBAC5EFD}.
Mengikat semuanya bersama-sama
Sekarang saya memiliki dua log berbeda yang ingin saya ikat bersama.
permintaan sysssislog
Menjalankan kueri ini menarik kembali baris yang relevan dari tabel logging old-school.
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;
Hasilnya tampak seperti
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 permintaan
Menjalankan kueri ini terhadap katalog SSISDB menunjukkan semua pesan yang ada di laporan di atas dan juga mengonfirmasi bahwa saya dapat menautkan nilai message
ke operation_id
serta kedbo.sysssislog.executionid
SELECT
OM.*
FROM
catalog.operation_messages AS OM
WHERE
OM.operation_id = 8;
Hasilnya adalah
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
Bungkus
Ketika paket dieksekusi di luar konteks katalog SSISDB (alias melalui SSDT-BI atau baris perintah ke .ispac) nilai dari nilai System::ServerExecutionID
tersebut adalah 0. Masuk akal, tetapi pembaca di masa mendatang akan menggunakan LEFT OUTER JOIN saat menghubungkan sysssislog ke catalog.operation_messages jika Anda ingin menangkap semua eksekusi paket.
Kiat topi, terima kasih yang tulus dan penghargaan yang diberikan kepada Marian karena menempatkan saya di jalur yang benar. Diberi pilihan antara menyimpan GUID (16 byte) dan bigint (8 byte) di tabel logging ringkasan saya, itu tidak ada gunanya bagi saya: tolong tolong bilangan bulat besar yang meningkat secara monoton.