記憶體中 OLTP 支援的資料類型

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

本文章列出記憶體中 OLTP 功能不支援的資料類型︰

  • 記憶體最佳化的資料表

  • 原生編譯的 T-SQL 模組

不支援的資料類型

以下是不支援的資料類型:

值得注意的支援資料類型

記憶體中 OLTP 的功能支援大多數的資料類型。 以下是少數值得格外注意的資料類型︰

字串與二進位類型 取得詳細資訊
binary 和 varbinary* binary 和 varbinary (Transact-SQL)
char 和 varchar* char 和 varchar (Transact-SQL)
nchar 和 nvarchar* nchar 和 nvarchar (Transact-SQL)

針對前述字串和二進位資料類型,從 SQL Server 2016 開始:

  • 每個記憶體最佳化資料表也可以擁有幾個 nvarchar(4000)之類的長資料行,即使其長度可能會超過 8060 個位元組的實體資料列大小。

  • 記憶體最佳化資料表可以擁有如 varchar(max)之資料類型的最大長度字串和二進位資料行。

識別 LOB 及其他 off-row 資料行

從 SQL Server 2016 開始,記憶體最佳化資料表支援非資料列的資料行,可讓單一資料表的資料列超過 8060 個位元組。 下列 Transact-SQL SELECT 陳述式會報告記憶體最佳化資料表的所有 off-row 資料行。 請注意:

  • 所有索引鍵資料行都會 in-row 儲存。
    • 非唯一索引鍵現在可以在記憶體最佳化資料表上包含可為 Null 的資料行。
    • 索引可以在記憶體最佳化資料表上宣告為 UNIQUE。
  • 所有 LOB 資料行都會 off-row 儲存。
  • max_length 為 -1 表示大型物件 (LOB) 資料行。
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;

其他資料類型

其他類型 取得詳細資訊
資料表類型 記憶體最佳化資料表變數

另請參閱

記憶體內部 OLTP 的 Transact-SQL 支援
在記憶體最佳化資料表中實作 SQL_VARIANT
記憶體最佳化資料表中的資料表和資料列大小