事件收集大量複製介面
AppFabric 為 SQL Server 提供預設的大量複製提供者,在將大量事件資料寫入監控儲存區時,可提供較佳的效能。但是,您可能會在非 SQL Server 儲存區中儲存事件監控資料。在此情況下,您需要開發資料庫的專屬大量複製提供者,以支援將事件資料大量複製到非 SQL Server 儲存區。若尚未註冊適當的大量複製外掛程式以用於特定資料儲存區,「事件收集」服務 會還原成 ADO.NET 批次插入模式,以將事件寫入監控儲存區。
為建立資料庫的專屬大量複製提供者,您的 .NET Framework 4 物件類別須實作 Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy
介面,做為大量複製提供者功能的一部分。接著,您必須在根 Web.config 檔案中註冊該提供者。註冊大量複製提供者以告知 「事件收集」服務 在需要將事件寫入儲存區時,叫用提供者的 IBulkCopy 介面。只有 「事件收集」服務 能利用程式設計方式來存取此介面。此介面被叫用時,大量複製提供者會將從「Windows 事件追蹤」(ETW) 工作階段快取的大量事件資料傳輸到監控儲存區。
設定大量複製提供者
下列範例說明如何向AppFabric註冊 「事件收集」服務 提供的預設 SQL Server 大量複製提供者 System.Data.SqlClient
。您可以利用類似的方式來註冊資料庫的專屬大量複製提供者。
<microsoft.applicationServer>
<monitoring lockElements="bulkCopyProviders, collectors">
<bulkCopyProviders>
<bulkCopyProvider providerName="System.Data.SqlClient" type="Microsoft.ApplicationServer.Monitoring.EventCollector.SqlServerBulkCopy, Microsoft.ApplicationServer.Monitoring, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</bulkCopyProviders>
<collectors>
<collector name="" session="0">
<settings retryCount="10" eventBufferSize="10000" retryWait="00:00:15" maxWriteDelay="00:00:05" />
</collector>
</collectors>
<default enabled="true" connectionStringName="DefaultMonitoringConnectionString" monitoringLevel="HealthMonitoring" />
</monitoring>
</microsoft.applicationServer>
<connectionStrings>
<add connectionString="Data Source=localhost;Initial Catalog=ApplicationServerMonitoring;Integrated Security=True" name="DefaultPersistenceConnectionString" providerName="System.Data.SqlClient" />
<add connectionString="Data Source=localhost;Initial Catalog=ApplicationServerMonitoring;Integrated Security=True" name="DefaultMonitoringConnectionString" providerName="System.Data.SqlClient" />
</connectionStrings>
Microsoft.ApplicationServer.Monitoring.EventCollector.SqlServerBulkCopy
是實作 IBulkCopy 介面的提供者類別類型。符合下列任一條件時,即會進行大量複製操作:
「事件收集」服務事件緩衝區中的事件數目超過
eventBufferSize
屬性指定的值。此範例中是設定為達到 10,000 個事件限制時,便予以寫入。maxWriteDelay
屬性中的時間間隔已過期。此範例中是設定為每隔 5 秒便予以寫入。
如需如何設定「事件收集」服務與大量複製提供者的詳細資訊,請參閱設定事件收集服務。
Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy (介面)
以下是 IBulkCopy 介面的定義。您可以實作 WriteServer 方法,使用資料庫的專屬提供者類別,來處理寫入事件資料的資料庫專屬工作。
Namespace: Microsoft.ApplicationServer.Monitoring.EventCollector
namespace Microsoft.ApplicationServer.Monitoring.EventCollector
{
using System;
using System.Data;
using System.Data.Common;
public interface IBulkCopy
{
//Number of rows in each batch. At the end of each batch, the rows in the batch are written to store
int BatchSize { get; set; }
//The destination table name in the store to write the rows
string DestinationTableName { get; set; }
//The database connection to the store to which the rows are written
DbConnection Connection { get; set; }
//Copies all rows from the supplied IDataReader to the destination table specified by the DestinationTableName property, on the store specified by the Connection property
void WriteToServer(IDataReader dataReader);
}
}
如需 DataTable 類別的詳細資訊,請參閱 DataTable 類別 (https://go.microsoft.com/fwlink/?LinkId=168571) (可能為英文網頁)。
2012-03-05