將資訊寫入應用程式記錄檔
您可以在 Microsoft SQL Server Integration Services (SSIS) 套件中包含指令碼工作來執行工作。 例如,工作可能會將變數資訊的集合寫入 Windows 應用程式記錄檔。 您可以建立包含資料流程工作的 SSIS 套件。 此資料流程工作包含資料列計數轉換。 您可以使用指令碼工作,將資料列計數轉換所填入的資料寫入 Windows 應用程式記錄檔。
本文說明如何使用指令碼工作,將資訊寫入 Windows 應用程式記錄檔。
原始產品版本:SQL Server
原始 KB 編號:906560
Description
此範例假設您已在 SSIS 套件中建立下列元素:
- 資料流程工作。
- 指令碼工作。
- 從資料流程工作到指令碼工作的連接器。
- 在資料流程工作中,您已在資料流程中建立資料列計數轉換。
當您執行套件時,資料列計數轉換會傳回您想要寫入 Windows 應用程式記錄檔的資料列計數資料。
設定指令碼工作
若要設定指令碼工作程式碼範例,請遵循 SSIS 設計工具中的下列步驟:
當 [控制流程] 索引標籤為作用中時,以滑鼠右鍵按一下設計表面,然後選取 [變數]。 [變數] 視窗會出現在左窗格。
在 [變數] 視窗中,選取 [新增變數],然後提供變數名稱作為 mycount。 根據預設,新 mycount 變數的資料類型為
Int32
。注意
注意:變數名稱參考會區分大小寫。
按兩下 [資料流程工作]。 作用中視窗會切換至 [資料流程] 索引標籤。
使用資料列計數轉換的屬性,將 VariableName 屬性的值設定為 mycount。
選取 [控制流程] 索引標籤,然後按兩下 [指令碼工作]。 [指令碼工作編輯器] 對話方塊即會出現。
在左窗格中,選取 [指令碼] 項目,然後將 ReadOnlyVariables 屬性的值變更為下列值:
PackageName,StartTime,ExecutionInstanceGUID,mycount
注意
PackageName、StartTime 和 ExecutionInstanceGUID 項目是系統變數。 這些系統變數是用來將套件資訊寫入 Windows 應用程式記錄檔。
在 [指令碼工作編輯器] 對話方塊中,選取 [編輯指令碼]。
當新的 Microsoft Visual Studio for Applications (VSTA) 視窗出現時,請遵循下列步驟:
在任何其他宣告之前,請確定程式碼中包含下列命名空間。
Imports System Imports System.Data Imports System.Math Imports System.Diagnostics Imports Microsoft.SqlServer.Dts.Runtime
使用
Main()
方法中的程式碼取代下列程式碼範例。Dim varMyCount As Variable = Dts.Variables("mycount") ' Dim varPackageName As Variable = Dts.Variables("PackageName") Dim varStartTime As Variable = Dts.Variables("StartTime") Dim varInstanceID As Variable = Dts.Variables("ExecutionInstanceGUID") Dim PackageDuration As Long '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ' Event log needs '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dim sSource As String Dim sLog As String Dim sEventMessage As String Dim sMachine As String '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> PackageDuration = DateDiff("s", varStartTime.Value, Now()) sSource = "RowCountReporting from SSIS" ' We need the message posted to the Application event log. sLog = "Application" sEventMessage = "Rows Processed: " & Chr(10) _ & " case Rows:" + varMyCount.Value().ToString + Chr(10) _ & "=============================================" & Chr(10) _ & "The Package: " + varPackageName.Value().ToString _ & Chr(10) _ & "Started: " & varStartTime.Value().ToString _ & Chr(10) _ & "Current Time:" & System.DateTime.Now _ & Chr(10) _ & "=============================================" _ & Chr(10) _ & "Package Run Duration in seconds: " & PackageDuration _ & Chr(10) _ & "Execution GUID: " & varInstanceID.Value().ToString sMachine = "." If Not EventLog.SourceExists(sSource, sMachine) Then EventLog.CreateEventSource(sSource, slog) End If Dim ELog As New EventLog(sLog, sMachine, sSource) Dim category As Short = 2 ' ELog.WriteEntry("Write from third source", 4, 777, 2) ELog.WriteEntry(sEventMessage, EventLogEntryType.Information, 777, category) '############################### Dts.TaskResult = ScriptResults.Success
成功執行套件之後,下列項目會出現在 Windows 應用程式記錄檔中。
Log Name: Application Source: RowCountReporting from SSIS Date: 12/20/2022 11:21:38 AM Event ID: 777 Task Category: (2) Level: Information Keywords: Classic User: N/A Computer: <hostname> Description: Rows Processed: case Rows:0 ============================================= The Package: Package Started: 12/20/2022 11:21:37 AM Current Time:12/20/2022 11:21:38 AM ============================================= Package Run Duration in seconds: 1 Execution GUID: {9DF22831-E608-47F7-BD62-F9BD3C2F9C77} Event Xml: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="RowCountReporting from SSIS" /> <EventID Qualifiers="0">777</EventID> <Version>0</Version> <Level>4</Level> <Task>2</Task> <Opcode>0</Opcode> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2022-12-20T17:21:38.5070621Z" /> <EventRecordID>122603</EventRecordID> <Correlation /> <Execution ProcessID="41588" ThreadID="0" /> <Channel>Application</Channel> <Computer><hostname>/Computer> <Security /> </System> <EventData> <Data>Rows Processed: case Rows:0 ============================================= The Package: Package Started: 12/20/2022 11:21:37 AM Current Time:12/20/2022 11:21:38 AM ============================================= Package Run Duration in seconds: 1 Execution GUID: {9DF22831-E608-47F7-BD62-F9BD3C2F9C77}</Data> </EventData> </Event>
參考資料
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: