Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Na SQL Serveru můžete využít možnosti trasování na straně serveru SQL Server Profiler k exportu definice trasování, kterou můžete použít k vytvoření sady kolekcí, která používá typ obecného kolektoru trasování SQL. Tento proces má dvě části:
- Vytvořte a exportujte trasování SQL Server Profiler
- Vytvořte skript nové sady sbírek na základě exportovaného trasování.
Scénář pro následující postupy zahrnuje shromažďování dat o všech uložených procedurách, které vyžadují dokončení 80 milisekund nebo déle. Abyste mohli provést tyto postupy, měli byste být schopni:
- K vytvoření a konfiguraci trasování použijte SQL Server Profiler.
- Pomocí aplikace SQL Server Management Studio otevřete, upravte a spusťte dotaz.
Vytvořte a exportujte trasování SQL Server Profiler
V aplikaci SQL Server Management Studio otevřete SQL Server Profiler. (V nabídce Tools vyberte SQL Server Profiler.)
V dialogovém okně Připojit k serveru vyberte Zrušit.
V tomto scénáři se ujistěte, že jsou hodnoty doby trvání nakonfigurované tak, aby se zobrazovaly v milisekundách (výchozí hodnota). Postupujte takto:
V nabídce Nástroje vyberte Možnosti.
V oblasti Možnosti zobrazení se ujistěte, že políčko Zobrazit hodnoty ve sloupci Doba trvání v mikrosekundách není zaškrtnuté.
Výběrem OK zavřete dialogové okno Obecné možnosti.
V nabídce Soubor vyberte Nové sledování.
V dialogovém okně Připojit k serveru vyberte server, ke kterému se chcete připojit, a pak vyberte Připojit.
Zobrazí se dialogové okno s názvem Vlastnosti trasování.
Na kartě Obecné postupujte takto:
Do pole Název trasování zadejte název, který chcete pro trasování použít. V tomto příkladu je název stopy
SPgt140
.V seznamu šablonvyberte šablonu, kterou chcete použít pro trasování. V tomto příkladu vyberte TSQL_SPs.
Na kartě Výběr událostí proveďte následující kroky:
Identifikujte události, které se mají použít pro trasování. V tomto příkladu zrušte zaškrtnutí všech políček ve sloupci Události s výjimkou Stávající spojení a SP:Completed.
V pravém dolním rohu zaškrtněte políčko Zobrazit všechny sloupce.
Vyberte řádek SP:Completed.
Posuňte se přes řádek ke sloupci Doba trvání a zaškrtněte políčko Doba trvání.
V pravém dolním rohu vyberte Filtry sloupců k otevření dialogového okna Upravit filtr. V dialogovém okně Upravit filtr postupujte takto:
V seznamu filtrů vyberte Délka trvání.
V okně logického operátoru rozbalte uzel Větší než nebo roven, zadejte
80
jako hodnotu a pak vyberte OK.
Vyberte Spustit pro zahájení trasování.
Na panelu nástrojů vyberte Zastavit vybrané trasování nebo Pozastavit vybrané trasování.
V nabídce File přejděte na Export, přejděte na Definice trasování skriptu a pak vyberte Pro sadu kolekcí trasování SQL.
V dialogovém okně Uložit jako zadejte název, který chcete použít pro definici trasování, do pole Název souboru a uložte ho do požadovaného umístění. V tomto příkladu je název souboru stejný jako název trasování (
SPgt140
).Vyberte OK, když se zobrazí zpráva, že soubor byl úspěšně uložen, a zavřete SQL Server Profiler.
Skriptování nové sady kolekcí z trasování SQL Server Profileru
V aplikaci SQL Server Management Studio v nabídce File přejděte na Otevřít, a pak vyberte Soubor.
V dialogovém okně Otevřít soubor vyhledejte a otevřete soubor, který jste vytvořili v předchozím postupu (
SPgt140
).Informace o trasování, které jste uložili, se otevřou v okně dotazu a sloučí se do skriptu, který můžete spustit a vytvořit novou sadu kolekcí.
Projděte skript a proveďte následující nahrazení, které jsou uvedeny v textu komentáře skriptu:
Nahraďte název sady kolekcí SQLTrace zde názvem, který chcete použít pro sadu kolekcí. V tomto příkladu pojmenujte sadu kolekcí SPROC_CollectionSet.
Nahraďte název položky kolekce SQLTrace zde názvem, který chcete použít pro položku kolekce. V tomto příkladu pojmenujte položku kolekce SPROC_Collection_Item.
Výběrem Spustit proveďte dotaz a vytvořte kolekci.
V Průzkumníku objektů ověřte, že byla vytvořena sada kolekcí. Postupujte takto:
Klepněte pravým tlačítkem myši na Managementa potom vyberte Aktualizovat.
Rozbalte Managementa potom rozbalte Shromažďování dat.
Kolekční sada SPROC_CollectionSet se zobrazí na stejné úrovni jako uzel systémové sady sběru dat. Ve výchozím nastavení je sada kolekcí zakázaná.
Pomocí Průzkumníka objektů můžete upravovat vlastnosti SPROC_CollectionSet, jako je režim kolekce a plán nahrávání. Postupujte podle stejných postupů jako u sad shromažďování systémových dat, které jsou k dispozici se shromažďovačem dat.
Příklady
Následující ukázka kódu je konečný skript, který je výsledkem kroků popsaných v předchozích postupech.
/*************************************************************/
-- 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