Udostępnij za pośrednictwem


Jak Utworzyć zestaw kolekcji śledzenia SQL za pomocą programu SQL Server Profiler

W SQL Server 2008 można wykorzystać możliwości śledzenia po stronie serwera SQL Server Profiler eksportować definicję śledzenia, można utworzyć zestaw kolekcji, który używa rodzajowego śledzenia SQL typ modułu zbierającego.Istnieją dwie części tego procesu:

  1. Utworzyć i wyeksportować SQL Server Profiler śledzenia.

  2. Skrypt nowy zestaw kolekcja oparte na eksportowany śledzenia.

Scenariusz dla poniższych procedur wymaga zbierania danych dotyczących procedura składowana, która wymaga 80 milisekund lub dłużej.Do wykonania tych procedur powinny mieć możliwość:

  • Użyj SQL Server Profiler do tworzenia i konfigurowania śledzenia.

  • Użyj SQL Server Management Studio do otwierania, edytowania i wykonać kwerendy.

Utworzyć i wyeksportować SQL Server Profiler śledzenia

  1. In SQL Server Management Studio, open SQL Server Profiler.(Na Narzędzia menu, kliknij Programu SQL Profiler.)

  2. W połączenie z serwerem okno dialogowe, kliknij przycisk anulowanie.

  3. W tym scenariuszu upewnij się, że wartości czasu trwania są skonfigurowane do wyświetlania w milisekundach (domyślnie).Aby to zrobić, wykonaj następujące kroki:

    1. Na Narzędzia menu, kliknij Opcje.

    2. W Opcje wyświetlania obszaru, upewnij się, że Pokaż wartości kolumna czas trwania w mikrosekundach (SQL Server 2005 lub nowsza) pole wyboru jest wyczyszczone.

    3. Kliknij OK zamknąć Ogólne opcje okno dialogowe.

  4. Na pliku menu, kliknij Nowe śledzenie.

  5. W połączenie z serwerem okno dialogowe, wybierz serwer, który chcesz połączyć, a następnie kliknij Połącz.

    Właściwości tropu pojawi się okno dialogowe.

  6. Na Ogólne karta, wykonaj następujące czynności:

    1. W nazwę śledzenia wpisz nazwę, której chcesz użyć do śledzenia.Na przykład nazwa śledzenia jest SPgt80.

    2. W za pomocą szablonu listy, wybierz szablon śledzenia.Na przykład kliknij TSQL_SPs.

  7. Na Zaznaczenie zdarzenia karta, wykonaj następujące czynności:

    1. Identyfikator zdarzenia dla śledzenia.Na przykład wyczyść wszystkie pola wyboru w zdarzenia kolumna, z wyjątkiem ExistingConnection i SP: ukończono.

    2. W prawym dolnym rogu wybierz Pokaż wszystkie kolumny pole wyboru.

    3. Kliknij SP: ukończono wiersza.

    4. Przewijania w wierszu do czas trwania kolumna, a następnie wybierz czas trwania pole wyboru.

  8. W prawym dolnym rogu kliknij Filtrów kolumn otworzyć Edytuj filtr okno dialogowe.W Edytuj filtr okno dialogowe wykonaj następujące czynności:

    1. Kliknij na liście filtrów czas trwania.

    2. W operator logiczny okna, rozwiń większe niż lub równe węzła, typ 80 jako wartość, a następnie kliknij OK.

  9. Kliknij uruchomić Aby rozpocząć śledzenie.

  10. Na pasku narzędzi kliknij przycisk Zatrzymanie śledzenia wybranych lub Śledzenia wybranych Wstrzymaj.

  11. Na pliku menu, wskaż wyeksportować, wskaż Definicji śledzenia skryptu, a następnie kliknij przycisk Dla śledzenia kolekcji zestawu SQL.

  12. W Zapisz jako okna dialogowego wpisz nazwę, której chcesz użyć dla definicji śledzenia w nazwę pliku pole, a następnie zapisz go w lokalizacji, która ma.Na przykład nazwa pliku jest taka sama jak nazwa śledzenia (SPgt80).

  13. Kliknij OK po wyświetleniu komunikatu, że plik został pomyślnie zapisany, a następnie Zamknij SQL Server Profiler.

Skrypt nowej kolekcja z SQL Server Profiler śledzenia

  1. W SQL Server Management Studio, na pliku menu, wskaż otwarte, , a następnie kliknij przycisk pliku.

  2. W Otwórz plik okna dialogowego Znajdź i Otwórz plik utworzony w poprzedniej procedurze (SPgt80).

    Informacje o śledzeniu, zapisany jest otwarty w oknie kwerendy i scalone skrypt można uruchomić, aby utworzyć nowy zestaw kolekcja.

  3. Przewiń skryptu i sprawdź następujące części zamienne, które są zapisane w skrypcie tekst komentarza:

    • Zamień SQLTrace zestaw kolekcja tutaj nazwę z nazwą, którego chcesz użyć dla zestaw kolekcja.Na przykład nazwa zestaw kolekcja SPROC_CollectionSet.

    • Zamień SQLTrace element kolekcja tutaj nazwę z nazwą, którego chcesz użyć dla element kolekcja.Na przykład nazwa element kolekcja SPROC_Collection_Item.

  4. Kliknij Wykonywanie , aby uruchomić kwerendę i utworzyć zestaw kolekcji.

  5. W Eksploratorze obiektów, sprawdź, czy zestaw kolekcja został utworzony.Aby to zrobić, wykonaj następujące kroki:

    1. Kliknij prawym przyciskiem myszy Management, a następnie kliknij przycisk Odśwież.

    2. Rozwiń Management, a następnie rozwiń węzeł Zbierania danych.

    SPROC_Collectionzestaw kolekcja zestaw pojawia się na tym samym poziomie, co systemu zbierania danych zestaws węzła.Domyślnie zestaw kolekcja jest wyłączona.

  6. Użyj Eksploratora obiekt do edycji właściwości SPROC_CollectionSet, takich jak tryb kolekcji i przekazać harmonogramu.Wykonaj te same procedury, które byłyby dla zestawów kolekcja danych systemu, które są dostarczane z modułów zbierających dane.

Przykład

Poniższy przykładowy kod jest końcowym skrypt wynikających z czynności opisanych w poprzedniej procedury.

/*************************************************************/
-- SQL Trace collection set generated from SQL Server Profiler
-- Date: 11/19/2007  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