Massenkopieschnittstelle der Ereignisauflistung
AppFabric stellt einen Standardanbieter für das Massenkopieren für SQL Server bereit, der beim Schreiben großer Mengen von Ereignisdaten in den Überwachungsspeicher eine bessere Leistung bietet. Möglicherweise speichern Sie Daten der Ereignisüberwachung jedoch in einem nicht von SQL Server gehosteten Speicher. In diesem Fall müssen Sie einen datenbankspezifischen Anbieter für das Massenkopieren entwickeln, um das Massenkopieren von Ereignisdaten in den nicht von SQL Server gehosteten Speicher zu unterstützen. Wenn für einen bestimmten Datenspeicher kein passendes Massenkopie-Plug-In registriert wurde, kehrt der Ereignisauflistungsdienst zum ADO.NET-Batcheinfügemodus zurück, um Ereignisse in den Überwachungsspeicher zu schreiben.
Zum Erstellen eines datenbankspezifischen Anbieters für das Massenkopieren implementiert die .NET Framework 4-Objektklasse die Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy
-Schnittstelle als Bestandteil der Funktionalität des Anbieters für das Massenkopieren. Anschließend wird der Anbieter in der Web.config-Stammdatei registriert. Durch die Registrierung des Anbieters für das Massenkopieren wird Ereignisauflistungsdienst angewiesen, beim Schreiben von Ereignissen in den Speicher die IBulkCopy-Schnittstelle des Anbieters aufzurufen. Nur der Ereignisauflistungsdienst kann programmgesteuert auf diese Schnittstelle zugreifen. Beim Aufruf überträgt der Anbieter für das Massenkopieren große Mengen zwischengespeicherter Ereignisdaten aus einer Sitzung der Ereignisablaufverfolgung für Windows (ETW) in den Überwachungsspeicher.
Konfigurieren eines Anbieters für das Massenkopieren
Dies ist ein Beispiel, wie der standardmäßige SQL Server-Anbieter für das Massenkopieren, System.Data.SqlClient
, der von AppFabric bereitgestellt wird, beim Ereignisauflistungsdienst registriert ist. Das Registrieren eines datenbankspezifischen Anbieters für das Massenkopieren muss in ähnlicher Form erfolgen.
<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
ist der Typ der Anbieterklasse, die die IBulkCopy-Schnittstelle implementiert. Der Massenkopiervorgang findet statt, wenn eine der folgenden Bedingungen erfüllt ist:
Die Anzahl der Ereignisse im Ereignisauflistungsdienst-Ereignispuffer überschreitet den Wert des
eventBufferSize
-Attributs. In diesem Beispiel ist das Auslösen des Schreibens beim Erreichen des Grenzwerts von 10.000 festgelegt.Das Zeitintervall im
maxWriteDelay
-Attribut ist abgelaufen. In diesem Beispiel ist es für Schreibvorgänge alle 5 Sekunden festgelegt.
Weitere Informationen zum Konfigurieren des Ereignisauflistungsdiensts und eines Anbieters für das Massenkopieren finden Sie unter Konfigurieren des Ereignisauflistungsdiensts.
Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy (Schnittstelle)
Enthält eine Definition der IBulkCopy-Schnittstelle. Die WriteServer-Methode muss implementiert werden, um den datenbankspezifischen Task des Schreibens von Ereignisdaten mithilfe der datenbankspezifischen Anbieterklasse auszuführen.
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);
}
}
Weitere Informationen zur Klasse DataTable finden Sie unter DataTable-Klasse (https://go.microsoft.com/fwlink/?LinkId=168571).
2011-12-05