Åtkomst till minnesoptimerade tabeller genom att använda tolkade Transact-SQL

gäller för:SQL ServerAzure SQL Database

Med bara några få undantag kan du komma åt minnesoptimerade tabeller med valfri Transact-SQL fråga eller DML-åtgärd (välj, infoga, uppdatera eller ta bort), ad hoc-batchar och SQL-moduler som lagrade procedurer, tabellvärdefunktioner, utlösare och vyer.

Tolkade Transact-SQL refererar till Transact-SQL batchar eller lagrade procedurer som inte är en internt kompilerad lagrad procedur. Tolkad Transact-SQL åtkomst till minnesoptimerade tabeller kallas interop-åtkomst.

Från och med SQL Server 2016 (13.x) kan frågor i tolkade Transact-SQL skanna minnesoptimerade tabeller parallellt, i stället för bara i serieläge.

Minnesoptimerade tabeller kan också nås med hjälp av en internt kompilerad lagrad procedur. Internt kompilerade lagrade procedurer rekommenderas för prestandakritiska OLTP-åtgärder.

Tolkad Transact-SQL åtkomst rekommenderas för följande scenarier:

  • Ad hoc-frågor och administrativa uppgifter.

  • Rapporteringsfrågor, som vanligtvis använder konstruktioner som inte är tillgängliga i inbyggda kompilerade lagrade procedurer (till exempel fönsterfunktioner , som ibland kallas OVER-funktioner ).

  • Om du vill migrera prestandakritiska delar av programmet till minnesoptimerade tabeller med minimala (eller inga) ändringar i programkoden. Du kan potentiellt se prestandaförbättringar från migrering av tabeller. Om du sedan migrerar lagrade procedurer till internt kompilerade lagrade procedurer kan du se ytterligare prestandaförbättringar.

  • När en Transact-SQL-instruktion inte är tillgänglig för internt kompilerade lagrade procedurer.

Följande Transact-SQL konstruktioner stöds dock inte i tolkade Transact-SQL lagrade procedurer som kommer åt data i en minnesoptimerad tabell.

Area Inte stödd
Åtkomst till tabeller TRUNCATE TABLE

MERGE (minnesoptimerad tabell som mål)

Dynamiska markörer och tangentuppsättningsmarkörer (dessa degraderas automatiskt till statisk).

Åtkomst från CLR-moduler med hjälp av kontextanslutningen.

Refererar till en minnesoptimerad tabell från en indexerad vy.
Databasöverskridande Frågor mellan databaser

Transaktioner mellan databaser

Länkade servrar

Tabellhänvisningar

Mer information om tabelltips finns i. Tabelltips (Transact-SQL). Ögonblicksbilden lades till för att stödja In-Memory OLTP.

Följande tabelltips stöds inte vid åtkomst till en minnesoptimerad tabell med hjälp av tolkad Transact-SQL.

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = heltal

XLOCK

NOWAIT

READPAST

TABLOCK

När du kommer åt en minnesoptimerad tabell från en explicit eller implicit transaktion med hjälp av tolkad Transact-SQL måste du göra minst något av följande:

En tabelltips på isoleringsnivå krävs inte för minnesoptimerade tabeller som används av frågor som körs i autokommitteringsläge.

Se även

Transact-SQL-stöd för In-Memory OLTP

Migrera till In-Memory OLTP-