Zugreifen auf speicheroptimierte Tabellen mit interpretiertem Transact-SQL
Gilt für: SQL Server Azure SQL-Datenbank Azure Synapse Analytics 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:
Geben Sie einen Tabellenhinweis auf die Isolationsstufe ein, z.B. SNAPSHOT, REPEATABLEREAD oder SERIALIZABLE.
Legt Sie die Datenbankoption MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT auf ON fest.
Ein Tabellenhinweis auf die Isolationsstufe ist bei speicheroptimierten Tabellen, auf die der Zugriff mit Abfragen im Autocommitmoduserfolgt, nicht erforderlich.
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für