Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2016 (13.x) SP 2 és újabb
Azure SQL Database
Felügyelt Azure SQL-példány
A tranzakciónapló virtuális naplófájljának (VLF) adatait adja vissza. Vegye figyelembe, hogy a tranzakciónapló-fájlok összesítése a tábla kimenetében van. A kimenet minden sora egy VLF-et jelöl a tranzakciónaplóban, és a naplóban az adott VLF-hez kapcsolódó információkat nyújt.
Szintaxis
sys.dm_db_log_info ( database_id )
Érvek
database_id | NULL | ALAPÉRTELMEZETT
Az adatbázis azonosítója. database_id egy int. Az érvényes bemenetek az adatbázis azonosítószáma, NULL vagy ALAPÉRTELMEZETT. Az alapértelmezett érték NULL. A NULL és a DEFAULT egyenértékű értékek az aktuális adatbázis kontextusában.
Adja meg a NULL értéket az aktuális adatbázis VLF-adatainak visszaadásához.
Megadhatja a beépített DB_ID függvényt. Ha a DB_ID
adatbázisnév megadása nélkül használja, az aktuális adatbázis kompatibilitási szintjének 90-es vagy annál nagyobbnak kell lennie.
Visszajuttatott tábla
Oszlop neve | Adattípus | Leírás |
---|---|---|
adatbázis_azonosító | int | Adatbázis-azonosító. Az Azure SQL Database-ben az értékek egyediek egyetlen adatbázisban vagy rugalmas készletben, de nem logikai kiszolgálón belül. |
fájl_azonosító | smallint | A tranzakciónapló fájlazonosítója. |
vlf_begin_offset | bigint | A virtuális naplófájl (VLF) helye eltolása a tranzakciónapló-fájl elejétől. |
vlf_size_mb | lebegőpontos | virtuális naplófájl (VLF) mérete MB-ban, két tizedesjegyre kerekítve. |
vlf_sorszám | bigint | virtuális naplófájl (VLF) sorszámot a létrehozott sorrendben. A naplófájl vLF-jeinek egyedi azonosítására szolgál. |
vlf_active | bit | Azt jelzi, hogy virtuális naplófájl (VLF) használatban van-e. 0 – A VLF nincs használatban. 1 – A VLF aktív. |
vlf_status | A virtuális naplófájl (VLF)állapota. Lehetséges értékek: 0 – A VLF inaktív 1 – A VLF inicializálva van, de nem használt 2 – A VLF aktív. |
|
vlf_parity | kis egész szám | A virtuális naplófájl (VLF)paritása. Belsőleg használható a napló végének meghatározásához egy VLF-ben. |
vlf_first_lsn | nvarchar(48) | virtuális naplófájl (VLF)első naplórekordjának (LSN). |
vlf_create_lsn | nvarchar(48) | |
vlf_encryptor_thumbprint (VLF titkosító ujjlenyomat) | varbinary(20) |
A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók Megjeleníti a VLF titkosítójának ujjlenyomatát, ha a VLF Transzparens adattitkosításihasználatával van titkosítva, ellenkező esetben NULL . |
Megjegyzések
A sys.dm_db_log_info
dinamikus felügyeleti függvény felváltja a DBCC LOGINFO
utasítást.
Az SQL Server tranzakciónapló architektúrája és kezelési útmutatórészletesen ismerteti, hogy mi az a képlet, amely alapján a növekedési esemény során hány VLF jön létre. Ez a képlet kissé megváltozott az SQL Server 2022-től kezdve (16.x).
Engedélyek
Az adatbázis VIEW SERVER STATE
engedélyére van szükség.
Engedélyek az SQL Server 2022-hez és újabb verziókhoz
Az adatbázishoz a VIEW DATABASE PERFORMANCE STATE engedélyre van szükség.
Példák
Egy. Adatbázisok meghatározása nagy számú VLF-et tartalmazó SQL Server-példányban
Az alábbi lekérdezés meghatározza a naplófájlokban több mint 100 virtuális merevlemezt tartalmazó adatbázisokat, amelyek hatással lehetnek az adatbázis indítási, visszaállítási és helyreállítási idejére.
SELECT [name], COUNT(l.database_id) AS 'vlf_count'
FROM sys.databases AS s
CROSS APPLY sys.dm_db_log_info(s.database_id) AS l
GROUP BY [name]
HAVING COUNT(l.database_id) > 100;
B. A tranzakciónapló utolsó VLF
pozíciójának meghatározása a naplófájl zsugorítása előtt
Az alábbi lekérdezés az utolsó aktív VLF pozíciójának meghatározására használható, mielőtt a SHRINK FILE fájlt futtatta volna a tranzakciónaplóban annak megállapításához, hogy a tranzakciónapló zsugorodhat-e.
USE AdventureWorks2022;
GO
;WITH cte_vlf AS (
SELECT ROW_NUMBER() OVER(ORDER BY vlf_begin_offset) AS vlfid, DB_NAME(database_id) AS [Database Name], vlf_sequence_number, vlf_active, vlf_begin_offset, vlf_size_mb
FROM sys.dm_db_log_info(DEFAULT)),
cte_vlf_cnt AS (SELECT [Database Name], COUNT(vlf_sequence_number) AS vlf_count,
(SELECT COUNT(vlf_sequence_number) FROM cte_vlf WHERE vlf_active = 0) AS vlf_count_inactive,
(SELECT COUNT(vlf_sequence_number) FROM cte_vlf WHERE vlf_active = 1) AS vlf_count_active,
(SELECT MIN(vlfid) FROM cte_vlf WHERE vlf_active = 1) AS ordinal_min_vlf_active,
(SELECT MIN(vlf_sequence_number) FROM cte_vlf WHERE vlf_active = 1) AS min_vlf_active,
(SELECT MAX(vlfid) FROM cte_vlf WHERE vlf_active = 1) AS ordinal_max_vlf_active,
(SELECT MAX(vlf_sequence_number) FROM cte_vlf WHERE vlf_active = 1) AS max_vlf_active
FROM cte_vlf
GROUP BY [Database Name])
SELECT [Database Name], vlf_count, min_vlf_active, ordinal_min_vlf_active, max_vlf_active, ordinal_max_vlf_active,
((ordinal_min_vlf_active-1)*100.00/vlf_count) AS free_log_pct_before_active_log,
((ordinal_max_vlf_active-(ordinal_min_vlf_active-1))*100.00/vlf_count) AS active_log_pct,
((vlf_count-ordinal_max_vlf_active)*100.00/vlf_count) AS free_log_pct_after_active_log
FROM cte_vlf_cnt;
GO