Udostępnij za pomocą


sys.fn_xe_file_target_read_file (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Odczytuje pliki XEL dziennika zdarzeń utworzone przez obiekt docelowy zdarzeń event_file rozszerzonych. Każdy wiersz w zestawie wyników reprezentuje zdarzenie. Dane zdarzenia są zwracane w formacie XML.

Pliki XEL można również odczytać za pomocą programu SQL Server Management Studio. Aby zapoznać się z przewodnikiem, zobacz Szybki start: zdarzenia rozszerzone.

Transact-SQL konwencje składni

Składnia

sys.fn_xe_file_target_read_file ( path , mdpath , initial_file_name , initial_offset )

Arguments

path

Ścieżka do plików do odczytu. ścieżka to nvarchar(260) bez wartości domyślnej.

  • W przypadku użycia z plikami w lokalnym systemie plików ścieżka musi zawierać nazwę pliku dziennika sesji zdarzeń. Nazwa pliku może zawierać * się jako symbol wieloznaczny do odczytywania danych z wielu plików.

  • W przypadku użycia z obiektami blob w kontenerze usługi Azure Storage ścieżka to adres URL HTTP skonstruowany przez łączenie dwóch części:

    1. Ścieżka do kontenera magazynu usługi Azure Storage, po której następuje ukośnik (/).

    2. Wspólny prefiks nazw obiektów blob w kontenerze, który powinien być odczytywany. Aby odczytać pojedynczy obiekt blob, użyj pełnej nazwy obiektu blob.

    Na przykład użycie metody https://<storage-account-name>.blob.core.windows.net/container-name>/xe_session as ścieżka pobiera dane ze wszystkich obiektów blob z nazwami rozpoczynającymi się od xe_session, a niezależnie od pozostałej części nazwy obiektu blob, w tym rozszerzenia. Nie można określić symboli wieloznacznych.

mdpath

Ścieżka do pliku metadanych odpowiadającego plikowi lub plikom określonym przez argument ścieżki . mdpath to nvarchar(260) bez wartości domyślnej.

W programie SQL Server 2012 (11.x) i nowszych wersjach nie potrzebujesz tego parametru. Jest ona przechowywana w celu zapewnienia zgodności z poprzednimi wersjami, w przypadku plików dziennika wygenerowanych w poprzednich wersjach programu SQL Server. W programie SQL Server 2016 (13.x) i nowszych wersjach ten parametr można podać jako NULL, ponieważ .xem pliki nie są już używane.

initial_file_name

Pierwszy plik do odczytu ze ścieżki. initial_file_name to nvarchar(260) bez wartości domyślnej. Jeśli NULL zostanie określony jako argument, wszystkie pliki znalezione w ścieżce są odczytywane.

Nazwa pliku musi być wartością zwracaną w zestawie sys.fn_xe_file_target_read_file wyników wywołania funkcji z tą samą ścieżką.

initial_offset

Służy do określania ostatniego przesunięcia odczytanych wcześniej. Pomija wszystkie zdarzenia do przesunięcia (włącznie). Wyliczanie zdarzeń rozpoczyna się po określonym przesunięcie. initial_offset jest bigint. Jeśli NULL zostanie określony jako argument, cały plik zostanie odczytany.

Uwaga / Notatka

initial_file_name i initial_offset są sparowane argumenty. Jeśli określisz wartość dla dowolnego argumentu, musisz określić wartość dla innego argumentu.

Zwrócona tabela

Nazwa kolumny Typ danych Description
module_guid uniqueidentifier Identyfikator GUID modułu zdarzeń. Nie można pustą wartość null.
package_guid uniqueidentifier Identyfikator GUID pakietu zdarzeń. Nie można pustą wartość null.
object_name nvarchar(256) Nazwa zdarzenia. Nie można pustą wartość null.
event_data nvarchar(max) Zawartość zdarzenia w formacie XML. Nie można pustą wartość null.
file_name nvarchar(260) Nazwa pliku zawierającego zdarzenie. Nie można pustą wartość null.
file_offset bigint Przesunięcie bloku w pliku zawierającym zdarzenie. Nie można pustą wartość null.
timestamp_utc datetime2(7) Data i godzina (strefa czasowa UTC) zdarzenia. Nie można pustą wartość null.

Dotyczy: SQL Server 2017 (14.x) i nowsze wersje, Azure SQL Database i Azure SQL Managed Instance.

Uwagi

Odczytywanie sys.fn_xe_file_target_read_file dużych zestawów wyników przez wykonanie w programie Management Studio może spowodować wystąpienie błędu. Użyj wyników do trybu plików (w programie SQL Server Management Studio, Ctrl+Shift+F), aby wyeksportować duże zestawy wyników do pliku czytelnego dla człowieka, aby odczytać plik za pomocą innego narzędzia.

Programy SQL Server 2008 (10.0.x) i SQL Server 2008 R2 (10.50.x) akceptują wyniki śledzenia wygenerowane w formacie XEL i XEM. Zdarzenia rozszerzone programu SQL Server 2012 (11.x) obsługują tylko wyniki śledzenia w formacie XEL. Zalecamy używanie programu Management Studio do odczytywania wyników śledzenia w formacie XEL.

Azure SQL

W usłudze Azure SQL Managed Instance lub Azure SQL Database pliki utworzone przez event_file obiekt docelowy są zawsze przechowywane jako obiekty blob w kontenerze usługi Azure Storage.

Możesz użyć sys.fn_xe_file_target_read_file polecenia , aby odczytywać dane z tych obiektów blob, jeśli istnieje poświadczenie zezwalające na dostęp do kontenera usługi Azure Storage. Aby zapoznać się z przewodnikiem, zapoznaj się z artykułem Tworzenie sesji zdarzeń z obiektem docelowym event_file w usłudze Azure Storage.

Jeśli określisz lokalną ścieżkę systemu plików, zostanie wyświetlony komunikat o błędzie podobny do następującego:

Msg 40538, Level 16, State 3, Line 15
A valid URL beginning with 'https://' is required as value for any filepath specified.

Permissions

W programie SQL Server 2019 (15.x) i poprzednich wersjach wymagane jest VIEW SERVER STATE uprawnienie na serwerze.

W programie SQL Server 2022 (16.x) i nowszych wersjach wymagane jest VIEW SERVER PERFORMANCE STATE uprawnienie na serwerze.

Przykłady

A. Pobieranie danych z plików w lokalnym systemie plików

W przypadku programu SQL Server 2014 (12.x) i poprzednich wersji poniższy przykład pobiera wszystkie wiersze ze wszystkich plików, w tym pliki .xel i .xem . W tym przykładzie obiekty docelowe i metapliki plików znajdują się w folderze śledzenia w folderze C:\traces\ .

SELECT *
FROM sys.fn_xe_file_target_read_file('C:\traces\*.xel', 'C:\traces\metafile.xem', NULL, NULL);

W programie SQL Server 2016 (13.x) i nowszych wersjach poniższy przykład pobiera zdarzenia we wszystkich .xel plikach w folderze domyślnym. Lokalizacja domyślna znajduje się \MSSQL\Log w folderze instalacyjnym wystąpienia.

SELECT *
FROM sys.fn_xe_file_target_read_file('*.xel', NULL, NULL, NULL);

W programie SQL Server 2017 (14.x) i nowszych wersjach poniższy przykład pobiera tylko dane z ostatniego dnia z wbudowanej sesji system_health. Sesja system_health to sesja zdarzeń rozszerzonych, która jest domyślnie dołączona do programu SQL Server. Aby uzyskać więcej informacji, zobacz Use the system_health session (Korzystanie z sesji system_health).

SELECT *
FROM sys.fn_xe_file_target_read_file('system_health*.xel', NULL, NULL, NULL)
WHERE CAST (timestamp_utc AS DATETIME2 (7)) > DATEADD(DAY, -1, GETUTCDATE());

B. Pobieranie danych z obiektów blob w kontenerze usługi Azure Storage

Odczytywanie danych ze wszystkich obiektów blob w kontenerze o nazwach rozpoczynających się od xe_session_.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_',
    NULL,
    NULL,
    NULL
);

Odczytywanie xe_session_0_133614763336380000.xel danych z obiektu blob.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_0_133614763336380000.xel',
    NULL,
    NULL,
    NULL
);

Odczytywanie xe_session_0_133614763336380000.xel danych z obiektu blob rozpoczynającego się od przesunięcia 33280.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_',
    NULL,
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_0_133614763336380000.xel',
    33280
);