Unterstützte Datentypen für In-Memory OLTP

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

In diesem Artikel werden die Datentypen aufgeführt, die keine Unterstützung erhalten für die In-Memory OLTP-Features für:

  • Speicheroptimierte Tabellen

  • Nativ kompilierte T-SQL-Module

Nicht unterstützte Datentypen

Die folgenden Datentypen werden nicht unterstützt:

Wichtige unterstützte Datentypen

Die meisten Datentypen werden von den Features von In-Memory OLTP unterstützt. Im folgenden Typen sollten explizit beachtet werden:

Zeichenfolgen- und Binärtypen Weitere Informationen finden Sie unter
binary und varbinary* binary und varbinary (Transact-SQL)
char und varchar* char und varchar (Transact-SQL)
nchar und nvarchar* nchar und nvarchar (Transact-SQL)

Für die vorhergehenden Zeichenfolgen- und binären Datentypen ab SQL Server 2016:

  • Eine einzelne speicheroptimierte Tabelle kann auch mehrere lange Spalten wie nvarchar(4000)enthalten, obwohl ihre Länge die physische Zeilengröße von 8060 Bytes überschreiten würde.

  • Eine speicheroptimierte Tabelle kann Zeichenfolgen mit maximaler Länge und binären Spalten mit Datentypen wie varchar(max)beinhalten.

Identifizieren von LOBs und anderen Spalten außerhalb von Zeilen

Beginnend mit SQL Server 2016, unterstützen speicheroptimierte Tabellen Spalten außerhalb von Zeilen, die eine einzelne Tabellenzeile größer sein als 8060 Bytes zu ermöglichen. Die folgende Transact-SQL-SELECT-Anweisung gibt für speicheroptimierte Tabellen alle Spalten zurück, die sich außerhalb von Zeilen befinden. Hinweis:

  • Alle Indexschlüsselspalten werden innerhalb von Zeilen gespeichert.
    • Nicht eindeutige Indexschlüssel in speicheroptimierten Tabellen können auf NULL festlegbare Spalten enthalten.
    • Indizes können in einer speicheroptimierte Tabelle als UNIQUE deklariert werden.
  • Alle LOB-Spalten werden außerhalb von Zeilen gespeichert.
  • Ein max_length-Wert „-1“ gibt eine Spalte mit großen Objekten (Large Objects, LOBs) an.
SELECT
        OBJECT_NAME(m.object_id) as [table],
        c.name                   as [column],
        c.max_length
    FROM
             sys.memory_optimized_tables_internal_attributes AS m
        JOIN sys.columns                                     AS c
                ON  m.object_id = c.object_id
                AND m.minor_id  = c.column_id
    WHERE
        m.type = 5;

Andere Datentypen

Andere Typen Weitere Informationen finden Sie unter
Tabellentypen Speicheroptimierte Tabellenvariablen

Weitere Informationen

Transact-SQL-Unterstützung für OLTP im Arbeitsspeicher
Implementieren von SQL_VARIANT in einer speicheroptimierten Tabelle
Tabellen- und Zeilengröße in speicheroptimierten Tabellen