Interfaz de copia masiva de recopilación de eventos
AppFabric ofrece un proveedor de copias masivas predeterminado para SQL que proporciona un mayor rendimiento al escribir grandes cantidades de datos de eventos en el almacén de seguimiento. No obstante, es posible que los datos de seguimiento de eventos se estén almacenando en un almacén que no sea SQL Server. En tal caso, deberá desarrollar un proveedor de copias masivas específico de la base de datos que permita la copia masiva de datos de eventos al almacén distinto de SQL Server. Si no se ha registrado un complemento de copia masiva adecuado para un almacén de datos específico, Servicio de recopilación de eventos revierte al modo de inserción por lotes ADO.NET para escribir eventos en el almacén de seguimiento.
Para crear un proveedor de copias masivas específico de la base de datos, la clase de objeto .NET Framework 4 implementa la interfaz Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy
como parte de la funcionalidad del proveedor de copias masivas. A continuación, debe registrar el proveedor en el archivo Web.config raíz. Al registrar el proveedor de copias masivas, se indica a Servicio de recopilación de eventos que invoque la interfaz IBulkCopy del proveedor cuando deba escribir eventos en el almacén. Únicamente Servicio de recopilación de eventos puede obtener acceso de programación a esta interfaz. Cuando se invoca, el proveedor de copias masivas transfiere grandes cantidades de datos de eventos en caché desde una sesión de seguimiento de eventos para Windows (ETW) al almacén de seguimiento.
Configuración de un proveedor de copias masivas
A continuación se muestra un ejemplo sobre cómo se registra el proveedor de copias masivas de SQL predeterminado, System.Data.SqlClient
, que ofrece AppFabric con Servicio de recopilación de eventos. Puede registrar el proveedor de copias masivas específico de la base de datos de modo similar.
<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
es el tipo de clase de proveedor que implementa la interfaz IBulkCopy. La operación de copia masiva tiene lugar cuando se cumple cualquiera de las condiciones siguientes:
El número de eventos en el búfer de eventos de Servicio de recopilación de eventos supera al atributo
eventBufferSize
. En este ejemplo, está configurado para la escritura cuando se alcance el límite de 10.000 eventos.El intervalo de tiempo ha caducado en el atributo
maxWriteDelay
. En este ejemplo, está establecido para escribir cada 5 segundos.
Para obtener más información sobre el modo de configurar Servicio de recopilación de eventos y un proveedor de copias masivas, consulte Configuración del servicio de recopilación de eventos.
Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy (interfaz)
Aquí se proporciona una definición de la interfaz de IBulkCopy. Debe implementar el método WriteServer para administrar la tarea específica de la base de datos según la que los datos de eventos se escriben mediante la clase de proveedor específica de la base de datos.
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);
}
}
Para obtener más información acerca de la clase DataTable, vea DataTable (Clase) (https://msdn.microsoft.com/es-es/library/system.data.datatable.aspx).
2012-03-05