Wenn Sie eine berechnete Spalte in SQL Server erstellen, haben Sie die Möglichkeit, sie als „persistent“ zu kennzeichnen. Eine permanente berechnete Spalte ist eine Spalte, die physisch in der Tabelle gespeichert ist. Wenn Sie nicht angeben, dass sie beibehalten wird, wird der Wert der Spalte jedes Mal berechnet, wenn Sie eine Abfrage dafür ausführen.
Sie können sys.computed_columns
abfragen Systemkatalogansicht, um herauszufinden, ob eine berechnete Spalte als persistent gekennzeichnet ist.
Beispiel 1 – Überprüfung einer berechneten Spalte
Hier ist ein Beispiel, das ich in meiner Testumgebung ausgeführt habe. In diesem Fall überprüfe ich eine berechnete Spalte namens TotalValue
.
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue';
Ergebnis:
+----------------+ | is_persisted | |----------------| | 1 | +----------------+
In diesem Fall ist die Spalte ist bestanden.
Falls Sie mehrere berechnete Spalten mit demselben Namen haben, können Sie den Tabellennamen auch zum WHERE
hinzufügen Klausel:
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue' AND OBJECT_NAME(object_id) = 'Products';
Beispiel 2 – Alle berechneten Spalten zurückgeben
In diesem Beispiel gebe ich alle berechneten Spalten zusammen mit ihrem is_persisted
zurück Werte.
SELECT OBJECT_NAME(object_id) AS [Table], name AS [Computed Column], is_persisted FROM sys.computed_columns;
Ergebnis:
+----------+-------------------+----------------+ | Table | Computed Column | is_persisted | |----------+-------------------+----------------| | Person | FullName | 0 | | Products | TotalValue | 1 | +----------+-------------------+----------------+
Beispiel 3 – Schema einbinden
In diesem Beispiel verbinde ich mich mit den sys.objects
anzeigen, um das Schema in die Ergebnisse aufzunehmen.
SELECT SCHEMA_NAME(o.schema_id) AS [Schema], OBJECT_NAME(cc.object_id) AS [Table], cc.name AS [Computed Column], cc.is_persisted FROM sys.computed_columns cc INNER JOIN sys.objects o ON o.object_id = cc.object_id;
Ergebnis:
+----------+----------+-------------------+----------------+ | Schema | Table | Computed Column | is_persisted | |----------+----------+-------------------+----------------| | dbo | Person | FullName | 0 | | dbo | Products | TotalValue | 1 | +----------+----------+-------------------+----------------+