Características de SQL Server no admitidas para OLTP en memoria

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

En este tema se describen las características de SQL Server que se pueden usar o no con objetos optimizados para memoria. Además, en la sección final se enumeran las características no admitidas para OLTP en memoria, pero que después se han admitido.

Características de SQL Server no admitidas para OLTP en memoria

Las características siguientes de SQL Server no se admiten en una base de datos que tiene objetos optimizados para memoria (incluido el grupo de archivos de datos optimizados para memoria).

Característica no admitida Descripción de la característica
Compresión de datos en tablas optimizadas para memoria. Puede usar la característica de compresión de datos como ayuda para comprimir los datos de una base de datos y reducir el tamaño de la base de datos. Para obtener más información, consulte Data Compression.
Creación de particiones de tablas optimizadas para memoria e índices HASH, así como índices no agrupados. Los datos de tablas e índices con particiones se dividen en unidades que pueden propagarse por más de un grupo de archivos de la base de datos. Para obtener más información, vea Partitioned Tables and Indexes.
Replicación Las configuraciones de replicación que no sean la replicación transaccional en tablas optimizadas para memoria en los suscriptores son incompatibles con tablas o vistas que hacen referencia a tablas optimizadas para memoria.

Si hay un grupo de archivos optimizados para memoria, no se admite la replicación con sync_mode="database snapshot".

Para obtener más información, vea Replicación para los suscriptores de tablas con optimización para memoria.
Creación de reflejo No se admite la creación de reflejo de la base de datos para bases de datos con un grupo de archivos MEMORY_OPTIMIZED_DATA. Para obtener más información sobre la creación de reflejo, consulte Creación de reflejo de la base de datos (SQL Server).
Recompilar el registro La recompilación del registro, ya sea a través de un adjunto o de ALTER DATABASE, no se admite para bases de datos con un grupo de archivos MEMORY_OPTIMIZED_DATA.
Servidor vinculado No se puede tener acceso a los servidores vinculados en la misma consulta o transacción como tablas optimizadas en memoria. Para obtener más información, vea Servidores vinculados (Motor de base de datos).
Registro masivo Independientemente del modelo de recuperación de la base de datos, todas las operaciones en tablas durables optimizadas para memoria siempre se registran completamente.
Registro mínimo Las tablas optimizadas para memoria no admiten el registro mínimo. Para obtener más información sobre el registro mínimo, vea El registro de transacciones (SQL Server) y Requisitos previos para el registro mínimo durante la importación en bloque.
Seguimiento de cambios Las tablas optimizadas para memoria no admiten el seguimiento de cambios.
Desencadenadores DDL No se admiten ni los desencadenadores DDL de nivel de base de datos ni de nivel de servidor con las tablas OLTP en memoria ni con módulos compilados de forma nativa.
Captura de datos modificados (CDC) SQL Server 2017 CU15 y versiones superiores admiten la habilitación de CDC en una base de datos que tenga tablas optimizadas para memoria. Esto solo es aplicable a la base de datos y a las tablas en disco de esta. En versiones anteriores de SQL Server, CDC no se puede usar con una base de datos que tenga tablas optimizadas para memoria, debido a que CDC usa internamente un desencadenador DDL para DROP TABLE.
Modo de fibra El modo de fibra no se admite con tablas optimizadas para memoria:

Si el modo de fibra está activo, no puede crear bases de datos con grupos de archivos optimizados para memoria ni agregar grupos de archivos optimizados para memoria a bases de datos existentes.

Puede habilitar el modo de fibra si hay bases de datos con grupos de archivos optimizados para memoria. Sin embargo, para habilitar el modo de fibra hay que reiniciar el servidor. En esa situación, las bases de datos con grupos de archivos optimizados para memoria no se podrían recuperar. Luego vería un mensaje de error que recomendaría deshabilitar el modo de fibra para usar las bases de datos con grupos de archivos optimizados para memoria.

Si el modo de fibra está activo, se produce un error al adjuntar y restaurar una base de datos con un grupo de archivos optimizados para memoria. Las bases de datos quedarían marcadas como sospechosas.

Para obtener más información, consulte lightweight pooling (opción de configuración del servidor).
Limitación de Service Broker No puede tener acceso a una cola desde un procedimiento almacenado compilado de forma nativa.

No puede tener acceso a una cola en una base de datos remota en una transacción que tiene acceso a tablas optimizadas para memoria.
Replicación en los suscriptores La replicación transaccional en tablas optimizadas para memoria en suscriptores se admite pero con algunas restricciones. Para obtener más información, vea Replicación en suscriptores de tablas con optimización para memoria.

Consultas y transacciones entre bases de datos

Con algunas excepciones, las transacciones entre bases de datos no se admiten. En la tabla siguiente se describen qué casos se admiten y las restricciones correspondientes. (Vea también Consultas entre bases de datos).

Bases de datos Permitida Descripción
Bases de datos de usuario, modelo y msdb. No En la mayoría de los casos, las consultas y transacciones entre bases de datos no se admiten.

Una consulta no puede acceder a otras bases de datos si usa una tabla optimizada para memoria o un procedimiento almacenado compilado de forma nativa. Esta restricción se aplica tanto a transacciones como a consultas.

Las excepciones son las bases de datos del sistema tempdb y master. Aquí, la base de datos master está disponible para acceso de solo lectura.
Base de datos de recursos, tempdb En una transacción que toca los objetos OLTP en memoria, las bases de datos de recursos y tempdb del sistema se pueden usar sin una restricción agregada.

Escenarios no admitidos

  • Acceso a tablas optimizadas para memoria mediante la conexión de contexto desde procedimientos almacenados CLR.

  • Cursores de conjunto de claves y dinámicos en consultas que tienen acceso a tablas optimizadas para memoria. Estos cursores se degradan a estáticos y de solo lectura.

  • No se admite el uso de MERGE INTOdestino, donde destino es una tabla optimizada para memoria.

    • MERGE USINGorigen se admite para las tablas optimizadas para memoria.
  • El tipo de datos ROWVERSION (TIMESTAMP) no se admite. Para obtener más información, consulte FROM (Transact-SQL).

  • El cierre automático no se admite con las bases de datos que tienen un grupo de archivos MEMORY_OPTIMIZED_DATA.

  • DDL transaccional, como las operaciones CREATE/ALTER/DROP de objetos OLTP en memoria, no se admite dentro de las transacciones de usuario.

  • Notificación de eventos.

  • Administración basada en directivas (PBM).

    • No se admiten los modos de impedir y solo registrar de PBM. La existencia de estas directivas en el servidor puede impedir la correcta ejecución de DDL de OLTP en memoria. Se admiten los modos a petición y programado.
  • La contención de base de datos (Bases de datos contenidas) no es compatible con OLTP en memoria.

    • Se admite la autenticación de la base de datos independiente. En cambio, todos los objetos OLTP en memoria se marcan como "breaking containment" en la vista de administración dinámica (DMV) dm_db_uncontained_entities.

Compatibilidades agregadas recientemente

En ocasiones, una versión más reciente de SQL Server agrega compatibilidad con una característica que anteriormente no se admitía. En esta sección se enumeran las características que no se solían admitir para OLTP en memoria, pero que después sí se han admitido.

En la tabla siguiente, los valores versión como (15.x) hacen referencia al valor devuelto por la instrucción SELECT @@Version; de Transact-SQL.

Nombre de característica Versión de SQL Server Comments
Instantáneas de base de datos 2019 (15.x) Ahora se admiten instantáneas de base de datos para bases de datos que tienen un grupo de archivos MEMORY_OPTIMIZED_DATA.

Consulte también