Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Con solo algunas excepciones, puede acceder a tablas optimizadas para memoria mediante cualquier consulta de Transact-SQL o operación DML (SELECT, INSERT, UPDATE o DELETE), lotes ad hoc y módulos SQL, como procedimientos almacenados, funciones de valores de tabla, desencadenadores y vistas.
El Transact-SQL interpretado hace referencia a Transact-SQL lotes o procedimientos almacenados distintos de un procedimiento almacenado compilado de forma nativa. El acceso interpretado Transact-SQL a las tablas optimizadas para memoria se conoce como acceso de interoperabilidad.
También se puede acceder a las tablas optimizadas para memoria mediante un procedimiento almacenado compilado de forma nativa. Se recomiendan procedimientos almacenados compilados de forma nativa para las operaciones OLTP críticas para el rendimiento.
Se recomienda el acceso Transact-SQL interpretado para estos escenarios:
Consultas ad hoc y tareas administrativas.
Consultas de informes, que normalmente usan construcciones que no están disponibles en procedimientos almacenados compilados de forma nativa (como funciones de ventana).
Para migrar partes críticas del rendimiento de la aplicación a tablas optimizadas para memoria, con cambios mínimos (o no) en el código de la aplicación. Es posible que vea mejoras de rendimiento al migrar tablas. Si después migra procedimientos almacenados a procedimientos almacenados compilados de forma nativa, es posible que vea una mejora adicional del rendimiento.
Cuando una instrucción Transact-SQL no está disponible para los procedimientos almacenados compilados de forma nativa.
Las construcciones de Transact-SQL siguientes no se admiten en procedimientos almacenados Transact-SQL interpretados que acceden a datos en una tabla optimizada para memoria.
| Ámbito | Sin fundamento |
|---|---|
| Acceso a tablas | TRUNCAR TABLA MERGE (tabla optimizada para memoria como destino) Cursores dinámicos y de conjunto de claves (estos se degradan automáticamente a estáticos). Acceder desde módulos CLR utilizando la conexión de contexto. Hacer referencia a una tabla optimizada para memoria desde una vista indizada. |
| Bases de datos cruzadas | Consultas entre bases de datos Transacciones entre bases de datos Servidores vinculados |
Sugerencias de tabla
Para obtener más información sobre las sugerencias de tabla, consulte . Sugerencias de tabla (Transact-SQL). Se añadió el aislamiento SNAPSHOT para respaldar In-Memory OLTP.
No se admiten las sugerencias de tabla siguientes al acceder a una tabla optimizada para memoria mediante Transact-SQL interpretado.
| HOLDLOCK | IGNORAR_RESTRICCIONES | IGNORE_TRIGGERS | NOWAIT |
| PAGLOCK | READCOMMITTED | Bloqueo de Confirmación de Lectura | READPAST |
| LECTURA NO CONFIRMADA | SARDINEL | SPATIAL_WINDOW_MAX_CELLS = entero | TABLOCK |
| TABLOCKXX | UPDLOCK | XLOCK |
Al acceder a una tabla optimizada para memoria desde una transacción explícita o implícita mediante Transact-SQL interpretado, debe incluir una sugerencia de tabla de nivel de aislamiento, como SNAPSHOT, REPEATABLEREAD o SERIALIZABLE, o puede usar MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT. Para obtener más información, vea Directrices para niveles de aislamiento de transacciones con tablas de Memory-Optimized y Opciones ALTER DATABASE SET (Transact-SQL).
Nota:
No se requiere una sugerencia de tabla de nivel de aislamiento para las tablas optimizadas para memoria a las que se accede mediante consultas que se ejecutan en modo de confirmación automática.
Véase también
compatibilidad deTransact-SQL con OLTP de In-Memory
Migración a In-Memory OLTP