Freigeben über


Zugreifen auf speicheroptimierte Tabellen mit interpretiertem Transact-SQL

Gilt für: SQL Server Azure SQL-Datenbank Wird nicht unterstützt. Azure Synapse Analytics Wird nicht unterstützt. Analytics Platform System (PDW)

Der Zugriff auf speicheroptimierte Tabellen ist bis auf einige Ausnahmen über beliebige Transact-SQL-Abfragen, DML-Vorgänge (SELECT, INSERT, UPDATE oder DELETE), Ad-hoc-Batches sowie über SQL-Module wie gespeicherte Prozeduren, Tabellenwertfunktionen, Trigger und Sichten möglich.

Interpretiertes Transact-SQL bezieht sich auf Transact–SQL-Batches oder gespeicherte Prozeduren, die keine systemintern kompilierten gespeicherten Prozeduren sind. Der Zugriff auf speicheroptimierte Tabellen mittels interpretiertem Transact-SQL wird als Interopzugriff bezeichnet.

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

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.

Interpretierter Transact-SQL-Zugriff wird für die folgenden 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 keine Transact-SQL-Anweisung für systemintern kompilierte gespeicherte Prozeduren verfügbar ist.

Die folgenden TransactSQL-Konstrukte werden in gespeicherten Prozeduren mit interpretiertem Transact-SQL, die auf Daten in einer speicheroptimierten Tabelle zugreifen, jedoch 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). Zur Unterstützung von In-Memory-OLTP wurde SNAPSHOT hinzugefügt.

Die folgenden Tabellenhinweise werden nicht unterstützt, wenn mit interpretiertem Transact-SQL auf eine speicheroptimierte Tabelle zugegriffen wird.

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = integer

XLOCK

NOWAIT

READPAST

TABLOCK

Wenn der Zugriff auf eine speicheroptimierte Tabelle von einer expliziten oder impliziten Transaktion mittels interpretiertem Transact-SQL erfolgt, müssen Sie mindestens einen der folgenden Schritte 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