Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
Die sys.dm_db_stats_properties dynamische Managementfunktion liefert Statistiken für das angegebene Datenbankobjekt in der aktuellen Datenbank zurück.
Für partitionierte Tabellen siehe auch die ähnliche sys.dm_db_incremental_stats_properties.
Syntax
sys.dm_db_stats_properties (object_id, stats_id)
Argumente
object_id
Die ID des Objekts in der aktuellen Datenbank.
object_id ist int.
stats_id
Die ID der Statistiken für die angegebene object_id. Du kannst die Statistik-ID aus der dynamischen Verwaltungsansicht sys.stats erhalten.
stats_id ist int.
Zurückgegebene Tabelle
| Spaltenname | Datentyp | BESCHREIBUNG |
|---|---|---|
object_id |
int | ID des Objekts (Tabelle oder indexierte Ansicht). |
stats_id |
int | Die ID des Statistikobjekts. Diese ist innerhalb der Tabelle oder indizierten Sicht eindeutig. Weitere Informationen finden Sie unter sys.stats (Transact-SQL). |
last_updated |
datetime2 | Datum und Uhrzeit der letzten Aktualisierung des Statistikobjekts. Weitere Informationen finden Sie im Abschnitt "Hinweise " in diesem Artikel. |
rows |
bigint | Gesamtanzahl der Zeilen in der Tabelle oder indizierten Sicht zum Zeitpunkt der letzten Aktualisierung der Statistik. Wenn die Statistik gefiltert wird oder einem gefilterten Index entspricht, kann die Anzahl der Zeilen geringer als die Anzahl der Zeilen in der Tabelle sein. |
rows_sampled |
bigint | Gesamtzahl der Zeilen, die für die statistischen Berechnungen in die Stichprobe aufgenommen wurden. |
steps |
int | Anzahl der Schritte im Histogramm. Weitere Informationen finden Sie unter DBCC SHOW_STATISTICS (Transact-SQL). |
unfiltered_rows |
bigint | Gesamtanzahl der Zeilen in der Tabelle vor dem Anwenden des Filterausdrucks (für gefilterte Statistiken). Wenn Statistiken nicht gefiltert werden, unfiltered_rows ist gleich dem in der Spalte rows zurückgegebenen Wert. |
modification_counter |
bigint | Gesamtanzahl der Änderungen für die führende Statistikspalte (auf der das Histogramm basiert) seit der letzten Aktualisierung der Statistik. Speicheroptimierte Tabellen: Das Starten von SQL Server 2016 (13.x) und in Azure SQL-Datenbank dieser Spalte enthält: Die Gesamtanzahl der Änderungen für die Tabelle seit der letzten Aktualisierung der Tabelle oder beim Neustart der Datenbank. |
persisted_sample_percent |
float | Der persistierte Prozentwert für die Stichprobe wird für Aktualisierungen von Statistiken verwendet, die keinen expliziten Prozentwert für die Stichprobenentnahme angibt. Wenn der Wert 0 (null) ist, wird kein persistierter Prozentwert für diese Statistik festgelegt. Gilt für: SQL Server 2016 (13.x) SP1 CU4 und spätere Versionen |
Hinweise
Die sys.dm_db_stats_properties Funktion gibt unter einer der folgenden Bedingungen eine leere Zeilenmenge zurück:
-
object_idoderstats_idistNULL. - Das angegebene Objekt wird nicht gefunden oder entspricht weder einer Tabelle noch einer indexierten Ansicht.
- Die angegebene Statistik-ID entspricht nicht bestehenden Statistiken für die angegebene Objekt-ID.
- Der aktuelle Nutzer hat keine Berechtigungen, um das Statistik-Objekt anzuzeigen.
Dieses Verhalten ermöglicht die sichere Verwendung von sys.dm_db_stats_properties , wenn sie auf Zeilen in Ansichten wie sys.objects und sys.statsangewandt wird.
Das Aktualisierungsdatum für die Statistiken befindet sich gemeinsam mit dem Histogramm und Dichtevektor nicht in den Metadaten, sondern im Statistik-Blobobjekt. Wenn keine Daten zum Generieren von Statistikdaten gelesen werden, wird das Statistikblob nicht erstellt, das Datum ist nicht verfügbar, und die last_updated Spalte ist NULL. Diese Bedingung gilt für gefilterte Statistiken, bei denen das Prädikat keine Zeilen zurückgibt, oder für neue leere Tabellen.
Berechtigungen
Du brauchst SELECT Berechtigungen für Statistikspalten, oder du musst die Tabelle besitzen, oder Mitglied der sysadmin festen Serverrolle, der db_owner festen Datenbankrolle oder der db_ddladmin festen Datenbankrolle sein.
Beispiele
A. Einfaches Beispiel
Das folgende Beispiel liefert Informationen über die Statistiken der Person.Person Tabelle in der AdventureWorks Datenbank.
SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);
B. Geben Sie alle statistischen Eigenschaften für eine Tabelle zurück
Das folgende Beispiel liefert Eigenschaften aller existierenden Statistiken für die Tabelle Sales.SalesOrderDetail.
SELECT
OBJECT_SCHEMA_NAME(stat.object_id) AS schema_name,
OBJECT_NAME(stat.object_id) AS table_name,
sp.stats_id,
stat.[name],
stat.filter_definition,
sp.last_updated,
sp.[rows],
sp.rows_sampled,
sp.steps,
sp.unfiltered_rows,
sp.modification_counter
FROM sys.stats AS stat
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE stat.object_id = OBJECT_ID(N'Sales.SalesOrderDetail')
C. Rückgabestatistik-Eigenschaften für häufig modifizierte Objekte
Das folgende Beispiel liefert alle Tabellen, indexierten Ansichten und Statistiken in der aktuellen Datenbank, für die die führende Spalte seit der letzten Statistikaktualisierung mehr als 1.000 Mal geändert wurde.
SELECT
OBJECT_SCHEMA_NAME(obj.[object_id]) AS schema_name,
obj.[name],
stat.[name],
stat.stats_id,
sp.last_updated,
sp.modification_counter
FROM sys.objects AS obj
INNER JOIN sys.stats AS stat ON stat.object_id = obj.object_id
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE sp.modification_counter > 1000;