Sdílet prostřednictvím


Rozhraní hromadného kopírování služby Shromažďování událostí

Technologie AppFabric poskytuje výchozího zprostředkovatele hromadného kopírování pro SQL Server, který při zápisu velkých množství dat událostí do úložiště monitorování nabízí lepší výkon. Data monitorování událostí však můžete ukládat i do jiného úložiště než SQL Server. V tom případě bude třeba vytvořit zprostředkovatele hromadného kopírování pro konkrétní databázi, který bude podporovat hromadné kopírování dat událostí do vašeho úložiště (jiného než SQL Server). Pokud pro konkrétní úložiště dat nebyl zaregistrován vhodný modul plug-in hromadného kopírování, obnoví služba Služba Shromažďování událostí za účelem zápisu událostí do úložiště monitorování režim dávkového vkládání ADO.NET.

Při vytváření zprostředkovatele hromadného kopírování pro konkrétní databázi implementuje třída objektu rozhraní .NET Framework 4 jako součást jeho funkcí rozhraní Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy. Potom zprostředkovatele zaregistrujete do kořenového souboru Web.config. Registrace zprostředkovatele hromadného kopírování způsobí, že služba Služba Shromažďování událostí v případě potřeby zápisu událostí do úložiště vyvolá rozhraní zprostředkovatele IBulkCopy. Programový přístup k tomuto rozhraní má pouze služba Služba Shromažďování událostí. Po jeho vyvolání přenese zprostředkovatel hromadného kopírování velké objemy dat událostí uložených v mezipaměti z relace Trasování událostí pro Windows do úložiště monitorování.

Konfigurace zprostředkovatele hromadného kopírování

Zde je příklad registrace výchozího zprostředkovatele hromadného kopírování pro SQL Server (System.Data.SqlClient), kterého poskytuje technologie AppFabric, do služby Služba Shromažďování událostí. Registraci zprostředkovatele hromadného kopírování pro konkrétní databázi byste provedli podobným způsobem.

<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 je typ třídy zprostředkovatele, jenž implementuje rozhraní IBulkCopy. Operace hromadného kopírování se provede po splnění některé z následujících podmínek:

  • Počet událostí ve vyrovnávací paměti událostí služby Služba Shromažďování událostí překračuje hodnotu atributu eventBufferSize. V tomto příkladu je nastaveno, že zápis se má provést po dosažení limitu 10 000 událostí.

  • Vypršel časový interval uvedený v atributu maxWriteDelay. V tomto příkladu je nastaveno, že zápis se má provést každých 5 sekund.

Další informace o konfiguraci služby Služba Shromažďování událostí a zprostředkovatele hromadného kopírování naleznete v tématu Konfigurace služby Shromažďování událostí.

Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy (rozhraní)

Zde je definice rozhraní IBulkCopy. Implementována by byla metoda WriteServer ke zpracování úlohy zápisu dat událostí pro konkrétní databázi pomocí třídy zprostředkovatele pro konkrétní databázi.

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);
    }
}

Další informace o třídě DataTable naleznete v tématu Třída DataTable (https://go.microsoft.com/fwlink/?LinkId=168571) (stránka může být v angličtině).

  2011-12-05