Delen via


Gebruik SQL Server Profiler om een set van SQL Trace-verzamelingen te maken

van toepassing op:SQL Server-

In SQL Server kunt u gebruikmaken van de traceringsmogelijkheden aan de serverzijde van SQL Server Profiler om een traceringsdefinitie te exporteren die u kunt gebruiken om een verzamelingsset te maken die gebruikmaakt van het type Generic SQL Trace Collector. Er zijn twee onderdelen voor dit proces:

  1. Een SQL Server Profiler-tracering maken en exporteren.
  2. Een nieuwe verzamelingsset opstellen op basis van een geƫxporteerde tracering.

Het scenario voor de volgende procedures omvat het verzamelen van gegevens over elke opgeslagen procedure waarvoor 80 milliseconden of langer nodig zijn. Als u deze procedures wilt voltooien, moet u het volgende kunnen doen:

  • Gebruik SQL Server Profiler om een tracering te maken en te configureren.
  • Gebruik SQL Server Management Studio om een query te openen, te bewerken en uit te voeren.

Een SQL Server Profiler-trace maken en exporteren

  1. Open SQL Server Profiler in SQL Server Management Studio. (Selecteer in het menu Extra de optie sql server-profiler.)

  2. Selecteer in het dialoogvenster Verbinding maken met serverAnnuleren.

  3. Voor dit scenario moet u ervoor zorgen dat duurwaarden zijn geconfigureerd voor weergave in milliseconden (de standaardinstelling). Voer hiervoor de volgende stappen uit:

    1. Selecteer in het menu Extra de optie Opties.

    2. Zorg ervoor dat in het weergaveopties gebied het selectievakje Waarden weergeven in de kolom Duur in microseconden is uitgeschakeld.

    3. Selecteer OK- om het dialoogvenster Algemene opties te sluiten.

  4. Selecteer in het menu BestandNieuwe tracering.

  5. Selecteer in het dialoogvenster Verbinding maken met server de server waarmee u verbinding wilt maken en selecteer vervolgens Verbinding maken.

    Het dialoogvenster Eigenschappen van tracering wordt weergegeven.

  6. Ga als volgt te werk op het tabblad Algemeen:

    1. Typ in het vak Traceringsnaam de naam die u wilt gebruiken voor de tracering. In dit voorbeeld is de traceringsnaam SPgt140.

    2. Selecteer in de lijst met sjablonen gebruikende sjabloon die u wilt gebruiken voor de trace. Selecteer voor dit voorbeeld TSQL_SPs.

  7. Ga als volgt te werk op het tabblad Selectie van gebeurtenissen:

    1. Identificeer de gebeurtenissen die moeten worden gebruikt voor de tracering. Schakel voor dit voorbeeld alle selectievakjes in de kolom Gebeurtenissen uit, met uitzondering van ExistingConnection en SP:Completed.

    2. Schakel in de rechterbenedenhoek het selectievakje Alle kolommen weergeven in.

    3. Selecteer de rij SP:Completed.

    4. Schuif over de rij naar de kolom Duur en schakel vervolgens het selectievakje Duur in.

  8. Selecteer in de rechterbenedenhoek Kolomfilters om het dialoogvenster Filter bewerken te openen. Ga als volgt te werk in het dialoogvenster Filter bewerken:

    1. Selecteer in de filterlijst Duur.

    2. In het booleaanse operatorvenster vouw je het groter dan of gelijk aan knooppunt uit, typ je 80 als de waarde, en selecteer je vervolgens OK.

  9. Selecteer uitvoeren om de tracering te starten.

  10. Selecteer op de werkbalk Geselecteerde tracering stoppen of Geselecteerde tracering onderbreken.

  11. Wijs in het menu Bestand naar Exporteren, wijs Scripttraceringsdefinitieaan en selecteer Voor SQL-traceringsverzameling.

  12. Typ in het dialoogvenster Opslaan als de naam die u wilt gebruiken voor de traceringsdefinitie in het vak Bestandsnaam en sla deze op de gewenste locatie op. In dit voorbeeld is de bestandsnaam hetzelfde als de traceringsnaam (SPgt140).

  13. Selecteer OK wanneer u een bericht ontvangt dat het bestand is opgeslagen en sluit sql Server Profiler.

Een nieuwe verzamelingsset uitvoeren op basis van een SQL Server Profiler-tracering

  1. Wijs in SQL Server Management Studio in het menu BestandOpenen aan, en selecteer vervolgens Bestand.

  2. Zoek in het dialoogvenster Bestand openen eerst naar het bestand en open het vervolgens dat u in de vorige procedure hebt gemaakt (SPgt140).

    De traceringsgegevens die u hebt opgeslagen, worden geopend in een queryvenster en samengevoegd in een script dat u kunt uitvoeren om de nieuwe verzamelingsset te maken.

  3. Blader door het script en breng de volgende vervangingen aan, die worden vermeld in de tekst van de scriptcommentaar:

    • Vervang SQLTrace verzamelingssetnaam hier door de naam die u wilt gebruiken voor de verzamelingsset. Geef in dit voorbeeld de verzameling de naam SPROC_CollectionSet.

    • Vervang SQLTrace-verzamelobjectnaam door de naam die u wilt gebruiken voor het verzamelobject. Geef in dit voorbeeld de naam van het verzamelingsitem SPROC_Collection_Item.

  4. Selecteer uitvoeren om de query uit te voeren en de verzamelingsset te maken.

  5. Controleer in Objectverkenner of de verzamelingsset is gemaakt. Voer hiervoor de volgende stappen uit:

    1. Klik met de rechtermuisknop op Managementen selecteer Vernieuwen.

    2. Vouw Beheeruit en vouw dan Gegevensverzamelinguit.

    De SPROC_CollectionSet verzamelingsset wordt weergegeven op hetzelfde niveau als het knooppunt voor systeemgegevensverzamelingssets. De verzamelingsset is standaard uitgeschakeld.

  6. Gebruik Objectverkenner om de eigenschappen van SPROC_CollectionSet te bewerken, zoals de verzamelingsmodus en het uploadschema. Volg dezelfde procedures als voor de verzamelingen systeemgegevens die bij de gegevensverzamelaar worden geleverd.

Voorbeelden

Het volgende codevoorbeeld is het laatste script dat het resultaat is van de stappen die in de voorgaande procedures zijn beschreven.

/*************************************************************/
-- SQL Trace collection set generated from SQL Server Profiler
-- Date: 11/19/2022  12:55:31 AM
/*************************************************************/
USE msdb;
GO

BEGIN TRANSACTION

BEGIN TRY
    -- Define collection set
    -- ***
    -- *** Replace 'SqlTrace Collection Set Name Here' in the
    -- *** following script with the name you want
    -- *** to use for the collection set.
    -- ***
    DECLARE @collection_set_id INT;

    EXEC [dbo].[sp_syscollector_create_collection_set] @name = N'SPROC_CollectionSet',
        @schedule_name = N'CollectorSchedule_Every_15min',
        @collection_mode = 0, -- cached mode needed for Trace collections
        @logging_level = 0, -- minimum logging
        @days_until_expiration = 5,
        @description = N'Collection set generated by SQL Server Profiler',
        @collection_set_id = @collection_set_id OUTPUT;

    SELECT @collection_set_id;

    -- Define input and output variables for the collection item.
    DECLARE @trace_definition XML;
    DECLARE @collection_item_id INT;

    -- Define the trace parameters as an XML variable
    SELECT @trace_definition = convert(XML, N'<ns:SqlTraceCollector xmlns:ns"DataCollectorType" use_default="0">
<Events>
  <EventType name="Sessions">
    <Event id="17" name="ExistingConnection" columnslist="1,2,14,26,3,35,12" />
  </EventType>
  <EventType name="Stored Procedures">
    <Event id="43" name="SP:Completed" columnslist="1,2,26,34,3,35,12,13,14,22" />
  </EventType>
</Events>
<Filters>
  <Filter columnid="13" columnname="Duration" logical_operator="AND" comparison_operator="GE" value="80000L" />
</Filters>
</ns:SqlTraceCollector>
');

    -- Retrieve the collector type GUID for the trace collector type.
    DECLARE @collector_type_GUID UNIQUEIDENTIFIER;

    SELECT @collector_type_GUID = collector_type_uid
    FROM [dbo].[syscollector_collector_types]
    WHERE name = N'Generic SQL Trace Collector Type';

    -- Create the trace collection item.
    -- ***
    -- *** Replace 'SqlTrace Collection Item Name Here' in
    -- *** the following script with the name you want to
    -- *** use for the collection item.
    -- ***
    EXEC [dbo].[sp_syscollector_create_collection_item] @collection_set_id = @collection_set_id,
        @collector_type_uid = @collector_type_GUID,
        @name = N'SPROC_Collection_Item',
        @frequency = 900, -- specified the frequency for checking to see if trace is still running
        @parameters = @trace_definition,
        @collection_item_id = @collection_item_id OUTPUT;

    SELECT @collection_item_id;

    COMMIT TRANSACTION;
END TRY

BEGIN CATCH
    ROLLBACK TRANSACTION;

    DECLARE @ErrorMessage NVARCHAR(4000);
    DECLARE @ErrorSeverity INT;
    DECLARE @ErrorState INT;
    DECLARE @ErrorNumber INT;
    DECLARE @ErrorLine INT;
    DECLARE @ErrorProcedure NVARCHAR(200);

    SELECT @ErrorLine = ERROR_LINE(),
        @ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE(),
        @ErrorNumber = ERROR_NUMBER(),
        @ErrorMessage = ERROR_MESSAGE(),
        @ErrorProcedure = ISNULL(ERROR_PROCEDURE(), '-');

    RAISERROR (
            14684,
            @ErrorSeverity,
            1,
            @ErrorNumber,
            @ErrorSeverity,
            @ErrorState,
            @ErrorProcedure,
            @ErrorLine,
            @ErrorMessage
            );
END CATCH;
GO