Freigeben über


Zugriff auf Memory-Optimized-Tabellen mithilfe von interpretierten Transact-SQL

Mit nur wenigen Ausnahmen können Sie mithilfe eines beliebigen Transact-SQL Abfrage- oder DML-Vorgangs (SELECT, INSERT, UPDATE oder DELETE), 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. Der interpretierte Transact-SQL-Zugriff auf speicheroptimierte Tabellen wird als Interop-Zugriff bezeichnet.

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

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

  • Ad-hoc-Abfragen und Administrative Aufgaben.

  • Berichtsabfragen, die in der Regel Konstrukte verwenden, die in systemeigenen kompilierten gespeicherten Prozeduren (z. B. Fensterfunktionen) nicht verfügbar sind.

  • Um leistungskritische Teile Ihrer Anwendung in speicheroptimierte Tabellen mit minimalen (oder ohne) Anwendungscodeänderungen zu migrieren. Sie können möglicherweise Leistungsverbesserungen durch die Migration von Tabellen erkennen. Wenn Sie gespeicherte Prozeduren dann zu nativ kompilierten gespeicherten Prozeduren migrieren, werden möglicherweise weitere Leistungsverbesserungen angezeigt.

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

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

Fläche Nicht unterstützt
Zugriff auf Tabellen Tabelle kürzen

MERGE (speicheroptimierte Tabelle als Ziel)

Dynamische Cursor und Keyset-Cursor (diese werden automatisch zu statischen umgewandelt).

Zugriff von CLR-Modulen mithilfe der Kontextverbindung.

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

Datenbankübergreifende Transaktionen

Verknüpfte Server

Tabellen-Tipps

Weitere Informationen zu Tabellenhinweisen finden Sie unter. Tabellenhinweise (Transact-SQL). Die SNAPSHOT-Isolation 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 IGNORE_CONSTRAINTS IGNORE_TRIGGERS NOWAIT
PAGLOCK READCOMMITTED READCOMMITTEDLOCK READPAST
READUNCOMMITTED DOLLE SPATIAL_WINDOW_MAX_CELLS = ganze Zahl TABLOCK
TABLOCKXX UPDLOCK XLOCK

Beim Zugriff auf eine speicheroptimierte Tabelle aus einer expliziten oder impliziten Transaktion mithilfe von interpretiertem Transact-SQL müssen Sie entweder einen Tabellenhinweis zur Isolationsebene wie SNAPSHOT, REPEATABLEREAD oder SERIALIZABLE einschließen oder MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT verwenden. Weitere Informationen finden Sie unter Richtlinien für Transaktionsisolationsstufen mit Memory-Optimized Tabellen und ALTER DATABASE SET-Optionen (Transact-SQL).

Hinweis

Für speicheroptimierte Tabellen, auf die von Abfragen zugegriffen wird, die im Auto-Commit-Modus ausgeführt werden, ist kein Tabellenhinweis zur Isolationsebene erforderlich.

Siehe auch

Transact-SQL Unterstützung für In-Memory OLTP
Migrieren zu In-Memory OLTP