Zugreifen auf speicheroptimierte Tabellen mit interpretiertem Transact-SQL

Gilt für: SQL Server Azure SQL-Datenbank Not supported. Azure Synapse Analytics Not supported. Analytics Platform System (PDW)

Mit nur wenigen Ausnahmen können Sie mithilfe von Transact-SQL-Abfragen oder DML-Vorgängen (Auswählen, Einfügen, Aktualisieren oder Löschen), Ad-hoc-Batches und SQL-Module wie gespeicherte Prozeduren, Tabellenwertfunktionen, Trigger und Ansichten auf speicheroptimierte Tabellen zugreifen.

Interpretierte Transact-SQL bezieht sich auf Transact-SQL-Batches oder gespeicherte Prozeduren außer einer nativ kompilierten gespeicherten Prozedur. Interpretierter Transact-SQL-Zugriff auf speicheroptimierte Tabellen wird als Interoperabilitätszugriff bezeichnet.

Ab SQL Server 2016 (13.x) können Abfragen in interpretierten Transact-SQL speicheroptimierte Tabellen parallel und nicht nur im seriellen Modus scannen.

Auf speicheroptimierte Tabellen kann auch mithilfe einer systemintern kompilierten gespeicherten Prozedur zugegriffen werden. Für leistungskritische OLTP-Vorgänge werden systemintern kompilierte gespeicherte Prozeduren empfohlen.

Der interpretierte Transact-SQL-Zugriff wird für diese Szenarien empfohlen:

  • Ad-hoc-Abfragen und Verwaltungsaufgaben

  • Berichtsabfragen, die in der Regel Konstrukte verwenden, die in nativ kompilierten gespeicherten Prozeduren nicht verfügbar sind (z.B. window -Funktionen, die auch als OVER -Funktionen bezeichnet werden).

  • Zum Migrieren leistungskritischer Teile der Anwendung zu speicheroptimierten Tabellen mit minimalen (oder ohne) Änderungen am Anwendungscode. Durch das Migrieren von Tabellen können u. U. Leistungsverbesserungen erzielt werden. Durch die anschließende Migration gespeicherter Prozeduren zu systemintern kompilierten gespeicherten Prozeduren lässt sich die Leistung möglicherweise weiter optimieren.

  • Wenn eine Transact-SQL-Anweisung für nativ kompilierte gespeicherte Prozeduren nicht verfügbar ist.

Die folgenden Transact-SQL-Konstrukte werden jedoch in interpretierten gespeicherten Transact-SQL-Prozeduren, die auf Daten in einer speicheroptimierten Tabelle zugreifen, nicht unterstützt.

Bereich Nicht unterstützt
Zugriff auf Tabellen TRUNCATE TABLE

MERGE (speicheroptimierte Tabelle als Ziel)

Dynamische und KEYSET-Cursor (diese werden automatisch auf "statisch" herabgestuft).

Zugriff aus CLR-Modulen mithilfe der Kontextverbindung.

Das Verweisen auf eine speicheroptimierte Tabelle aus einer indizierten Sicht.
Datenbankübergreifend Datenbankübergreifende Abfragen

Datenbankübergreifende Transaktionen

Verknüpfte Server

Tabellenhinweise

Weitere Informationen zu Tabellenhinweisen finden Sie unter Tabellenhinweise (Transact-SQL) Die MOMENTAUFNAHME wurde hinzugefügt, um In-Memory OLTP zu unterstützen.

Die folgenden Tabellenhinweise werden beim Zugriff auf eine speicheroptimierte Tabelle mit interpretiertem Transact-SQL nicht unterstützt.

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = integer

XLOCK

NOWAIT

READPAST

TABLOCK

Beim Zugriff auf eine speicheroptimierte Tabelle aus einer expliziten oder impliziten Transaktion mit interpretiertem Transact-SQL müssen Sie mindestens eine der folgenden Aktionen ausführen:

Ein Tabellenhinweis auf die Isolationsstufe ist bei speicheroptimierten Tabellen, auf die der Zugriff mit Abfragen im Autocommitmoduserfolgt, nicht erforderlich.

Weitere Informationen

Transact-SQL-Unterstützung für OLTP im Arbeitsspeicher

Migrieren zu In-Memory OLTP