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.
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Las tablas con optimización para memoria, los procedimientos almacenados compilados de forma nativa y las funciones definidas por el usuario no admiten toda la funcionalidad de Transact-SQL que sí admiten las tablas basadas en disco, los procedimientos almacenados interpretados de Transact-SQL y las funciones definidas por el usuario. Cuando se intenta usar una de las características no admitidas, el servidor devuelve un error.
El mensaje de error menciona el tipo de instrucción Transact-SQL (por ejemplo, característica, operación, opción) y el nombre de la característica o palabra clave de Transact-SQL. La mayor parte de características no admitidas devolverán el error 10794, con un mensaje de error que indique la función no admitida. En las tablas siguientes se enumeran las características y las palabras clave de Transact-SQL que pueden aparecer en el texto del mensaje de error, así como la acción correctiva para resolver el error.
Para obtener más información sobre las características admitidas con las tablas optimizadas para memoria y los procedimientos almacenados compilados de forma nativa, vea:
Problemas de migración para los procedimientos almacenados compilados de forma nativa
Características de SQL Server no admitidas para OLTP en memoria
Bases de datos que utilizan OLTP en memoria
En la siguiente tabla se enumeran las características de Transact-SQL no compatibles y las palabras clave que pueden aparecer en el texto del mensaje de error que implica una base de datos OLTP en memoria. La tabla también muestra la resolución del error.
| Tipo | Nombre | Solución |
|---|---|---|
| Opción | CIERRE AUTOMÁTICO | La opción de base de datos AUTO_CLOSE=ON no se admite con las bases de datos que tienen un grupo de archivos MEMORY_OPTIMIZED_DATA. |
| Opción | ATTACH_REBUILD_LOG | La opción de base de datos ATTACH_REBUILD_LOG de CREATE no se admite con las bases de datos que tienen un grupo de archivos MEMORY_OPTIMIZED_DATA. |
| Característica | DATABASE INSTANTÁNEA | La creación de instantáneas de base de datos no se admite con las bases de datos que tienen un grupo de archivos MEMORY_OPTIMIZED_DATA. |
| Característica | Replicación mediante el sync_method 'database snapshot' o 'database snapshot character' | La replicación con sync_method 'database snapshot' o 'database snapshot character' no se admite con las bases de datos que tienen un grupo de archivos MEMORY_OPTIMIZED_DATA. |
| Característica | DBCC CHECKDB (Comando para verificar la integridad de la base de datos) DBCC CHECKTABLE (Comando utilizado para verificar la integridad de las tablas en SQL Server) |
DBCC CHECKDB omite las tablas optimizadas para memoria en la base de datos. DBCC CHECKTABLE producirá un error en las tablas optimizadas para memoria. |
Tablas optimizadas para la memoria
En la siguiente tabla se enumeran las características de Transact-SQL no compatibles y las palabras clave que pueden aparecer en el texto del mensaje de error que implica una tabla optimizada para memoria. La tabla también muestra la resolución del error.
| Tipo | Nombre | Solución |
|---|---|---|
| Característica | ENCENDIDO | Las tablas con optimización para memoria no se pueden colocar en un grupo de archivos ni en un esquema de partición. Quite la cláusula ON de la instrucción CREATE TABLE. Todas las tablas optimizadas para memoria se asignan al grupo de archivos optimizados para memoria. |
| Tipo de datos | Nombre del tipo de datos | No se admite el tipo de datos indicado. Reemplace el tipo por uno de los tipos de datos admitidos. Para obtener más información, vea Tipos de datos admitidos para OLTP en memoria. |
| Característica | Columnas calculadas |
Se aplica a: SQL Server 2014 (12.x) y SQL Server 2016 (13.x) Las tablas optimizadas para memoria no admiten columnas calculadas. Quite las columnas calculadas de la instrucción CREATE TABLE. Azure SQL Database y SQL Server, a partir de SQL Server 2017 (14.x), admiten columnas calculadas en tablas e índices con optimización para memoria. |
| Característica | Replicación | La replicación no es compatible con las tablas optimizadas para memoria. |
| Característica | FILESTREAM | Las columnas de las tablas optimizadas para memoria no admiten almacenamiento FILESTREAM. Quite la palabra clave FILESTREAM de la definición de columna. |
| Característica | SPARSE | Las columnas de tablas optimizadas para memoria no se pueden definir con el atributo SPARSE. Quite la palabra clave SPARSE de la definición de columna. |
| Característica | ROWGUIDCOL | Las columnas de las tablas optimizadas para memoria no admiten la opción ROWGUIDCOL. Quite la palabra clave ROWGUIDCOL de la definición de columna. |
| Característica | CLAVE EXTRANJERA |
Se aplica a: Azure SQL Database y SQL Server a partir de SQL Server 2016 (13.x) En tablas optimizadas para memoria, las restricciones FOREIGN KEY solo se admiten para claves externas que hacen referencia a las claves principales de otras tablas optimizadas para memoria. Quite la restricción de la definición de tabla si la clave externa hace referencia a una restricción única. En SQL Server 2014 (12.x), no se admiten las restricciones FOREIGN KEY en las tablas optimizadas para memoria. |
| Característica | índice agrupado | Especifique un índice no agrupado. Si se trata de un índice de clave principal, no se olvide de especificar PRIMARY KEY NONCLUSTERED. |
| Característica | DDL dentro de transacciones | Las tablas con optimización para memoria y los procedimientos almacenados compilados de forma nativa no se pueden crear ni quitar en el contexto de una transacción de usuario. No inicie una transacción y asegúrese de que la configuración IMPLICIT_TRANSACTIONS de sesión es OFF antes de ejecutar la instrucción CREATE o DROP. |
| Característica | Desencadenadores DDL | Las tablas con optimización para memoria y los procedimientos almacenados compilados de forma nativa no se pueden crear ni quitar si existe un desencadenador de base de datos o de servidor para la operación DDL. Quite los desencadenadores de servidor y base de datos en CREATE/DROP TABLE y CREATE/DROP PROCEDURE. |
| Característica | EVENT NOTIFICATION | Las tablas con optimización para memoria y los procedimientos almacenados compilados de forma nativa no se pueden crear ni quitar si existe una notificación de evento de base de datos o de servidor para la operación DDL. Quite las notificaciones de eventos del servidor y de la base de datos de CREATE TABLE o DROP TABLE y CREATE PROCEDURE o DROP PROCEDURE. |
| Característica | FileTable | Las tablas con optimización para memoria no se pueden crear como tablas de archivos. Quitar el argumento AS FileTable de la CREATE TABLE instrucción |
| Operación | Actualización de columnas de clave principal | Las columnas de clave principal de las tablas optimizadas para memoria y los tipos de tablas no se pueden actualizar. Si es necesario actualizar la clave principal, elimine la fila antigua e inserte la nueva fila con la clave principal actualizada. |
| Operación | CREATE INDEX | Los índices de las tablas optimizadas para memoria deben especificarse en línea con la CREATE TABLE instrucción o con la ALTER TABLE instrucción . |
| Operación | CREATE FULLTEXT INDEX | Las tablas optimizadas para memoria no admiten índices de texto completo. |
| Operación | Cambios en los esquemas | Las tablas con optimización para memoria y los procedimientos almacenados compilados de forma nativa no admiten determinados cambios en los esquemas: Azure SQL Database y SQL Server a partir de SQL Server 2017 (14.x): se admiten las operaciones ALTER TABLE, ALTER PROCEDURE y sp_rename. No se admiten otros cambios en el esquema, por ejemplo, al agregar propiedades extendidas. SQL Server 2016 (13.x): se admiten las operaciones ALTER TABLE y ALTER PROCEDURE. No se admiten otros cambios en el esquema, incluido sp_rename. SQL Server 2014 (12.x): No se admiten los cambios de esquema. Para cambiar la definición de una tabla con optimización para memoria o un procedimiento almacenado compilado de forma nativa, primero quite el objeto y, a continuación, vuelva a crearlo con la definición deseada. |
| Operación | TRUNCATE TABLE | Las tablas optimizadas para memoria no admiten la operación TRUNCATE. Para quitar todas las filas de una tabla, elimine todas las filas mediante DELETE FROMtable o drop y vuelva a crear la tabla. |
| Operación | ALTER AUTHORIZATION | No es posible cambiar el propietario de una tabla optimizada para memoria o de un procedimiento almacenado compilado de forma nativa existente. Para cambiar la propiedad, elimine y vuelva a crear la tabla o el procedimiento. |
| Operación | ALTER SCHEMA | No se admite transferir una tabla existente o un procedimiento almacenado compilado de forma nativa a otro esquema. Elimine y vuelva a crear el objeto para transferirlo entre esquemas. |
| Operación | DBCC CHECKTABLE (Comando utilizado para verificar la integridad de las tablas en SQL Server) | DBCC CHECKTABLE no es compatible con las tablas optimizadas para memoria. Para comprobar la integridad de los archivos de punto de control en el disco, realice una copia de seguridad del grupo de archivos MEMORY_OPTIMIZED_DATA. |
| Característica | ANSI_PADDING DESACTIVADO | La opción ANSI_PADDING de sesión debe ser ON al crear tablas optimizadas para memoria o procedimientos almacenados compilados de forma nativa. Ejecute SET ANSI_PADDING ON antes de ejecutar la instrucción CREATE. |
| Opción | COMPRESIÓN_DE_DATOS | Las tablas optimizadas para memoria no admiten la compresión de datos. Quite la opción de la definición de tabla. |
| Característica | DTC | No se puede tener acceso a las tablas con optimización para memoria ni a los procedimientos almacenados compilados de forma nativa desde transacciones distribuidas. En su lugar, use transacciones SQL. |
| Operación | Tablas optimizadas para memoria como destino de MERGE | Las tablas optimizadas para memoria no pueden ser el destino de una MERGE operación. Use las instrucciones INSERT, UPDATE y DELETE en su lugar. |
Índices de las tablas con optimización para memoria
En la tabla siguiente se enumeran las características y las palabras clave de Transact-SQL que pueden aparecer en el texto de un mensaje de error relacionado con un índice de una tabla optimizada para memoria, así como la acción correctiva para resolver el error.
| Tipo | Nombre | Solución |
|---|---|---|
| Característica | Índice filtrado | Las tablas optimizadas para memoria no admiten índices filtrados. Omita la cláusula WHERE en la especificación de índice. |
| Característica | Columnas incluidas | No es necesario especificar columnas incluidas en las tablas optimizadas para memoria. Todas las columnas de la tabla optimizada para memoria se incluyen de forma implícita en cada índice optimizado para memoria. |
| Operación | DROP INDEX | No es posible quitar los índices de las tablas optimizadas para memoria. Puede eliminar índices mediante ALTER TABLE. Para obtener más información, vea Modificar tablas con optimización para memoria. |
| Opción de índice | Opción de índice | Solo se admite una opción de índice (BUCKET_COUNT) para los índices HASH. |
Índices hash no agrupados
En la tabla siguiente se enumeran las características y las palabras clave de Transact-SQL que pueden aparecer en el texto de un mensaje de error relacionado con un índice de hash no clúster, así como la acción correctiva para resolver el error.
| Tipo | Nombre | Solución |
|---|---|---|
| Opción | ASC/DESC | Los índices hash no agrupados no están ordenados. Quite las palabras clave ASC y DESC de la especificación de clave de índice. |
Procedimientos almacenados compilados de forma nativa y funciones definidas por el usuario
En la tabla siguiente se enumeran las características y las palabras clave de Transact-SQL que pueden aparecer en el texto de un mensaje de error relacionado con procedimientos almacenados compilados de forma nativa y funciones definidas por el usuario, así como la acción correctiva para resolver el error.
| Tipo | Característica | Solución |
|---|---|---|
| Característica | Variables de tabla en línea | Los tipos de tablas no pueden declararse en línea con las declaraciones de variables. Los tipos de tabla se deben declarar explícitamente mediante una CREATE TYPE instrucción . |
| Característica | Cursores | Los procedimientos almacenados compilados de forma nativa no admiten cursores. Cuando ejecute el procedimiento desde el cliente, utilice RPC en lugar de la API de cursores. Con ODBC, evite la instrucción Transact-SQL EXECUTE, en su lugar, especifique el nombre del procedimiento directamente. Cuando ejecute el procedimiento desde un lote de Transact-SQL o desde otro procedimiento almacenado, evite usar un cursor con el procedimiento almacenado compilado de forma nativa. Cuando cree un procedimiento almacenado compilado de forma nativa, en lugar de un cursor, use la lógica basada en conjunto o un bucle WHILE . |
| Característica | Valores predeterminados de parámetros no constantes | Cuando se usan los valores predeterminados de los parámetros en procedimientos almacenados compilados de forma nativa, dichos valores deben ser constantes. Quite los caracteres comodín de las declaraciones de parámetro. |
| Característica | EXTERNO | Los procedimientos almacenados CLR no se pueden compilar de forma nativa. Quite de la instrucción CREATE PROCEDURE la cláusula AS EXTERNAL o la opción NATIVE_COMPILATION. |
| Característica | Procedimientos almacenados numerados | Los procedimientos almacenados compilados de forma nativa no se pueden numerar. Elimine el ;número de la instrucción CREATE PROCEDURE. |
| Característica | sentencias VALUES de varias filas INSERT ... | No se pueden insertar varias filas con la misma INSERT instrucción en un procedimiento almacenado compilado de forma nativa. Cree sentencias INSERT para cada fila. |
| Característica | Expresiones de tabla común (CTE) | Los procedimientos almacenados compilados de forma nativa no admiten expresiones de tabla común (CTE). Vuelva a escribir la consulta. |
| Característica | CÓMPUTO | No se admite la cláusula COMPUTE . Quítelo de la consulta. |
| Característica | SELECT INTO | La cláusula INTO no se puede usar con la instrucción SELECT . Vuelva a escribir la consulta como INSERT INTOTableSELECT. |
| Característica | Lista de columnas insertadas incompleta | En general, en las instrucciones INSERT deben especificarse valores para todas las columnas de la tabla. Sin embargo, sí admitimos restricciones DEFAULT y columnas IDENTITY(1,1) en tablas con optimización para memoria. Estas columnas pueden omitirse y, en el caso de las columnas IDENTITY, deben omitirse de la lista de columnas INSERT. |
| Característica | Función | Los procedimientos almacenados compilados de forma nativa no admiten algunas funciones integradas. Quite la función rechazada del procedimiento almacenado. Para obtener más información sobre las funciones integradas admitidas, vea Características admitidas en los módulos T-SQL compilados de forma nativao Procedimientos almacenados compilados de forma nativa. |
| Característica | CASO |
Se aplica a: SQL Server 2014 (12.x) y SQL Server a partir de SQL Server 2016 (13.x) Las expresiones CASE no se admiten en las consultas en procedimientos almacenados compilados de forma nativa. Cree consultas para cada caso. Para obtener más información, vea Implementación de una expresión CASE de un procedimiento almacenado compilado de forma nativa. Azure SQL Database y SQL Server a partir de SQL Server 2017 (14.x) admiten expresiones CASE. |
| Característica | INSERT EXECUTE | Quite la referencia. |
| Característica | Ejecute | Solo se admite para ejecutar procedimientos almacenados de forma nativa y funciones definidas por el usuario. |
| Característica | agregados definidos por el usuario | En los procedimientos almacenados compilados de forma nativa no se pueden usar funciones de agregado definidas por el usuario. Quite del procedimiento la referencia a la función. |
| Característica | Metadatos en el modo de exploración | Los procedimientos almacenados compilados de forma nativa no admiten metadatos en el modo de exploración. Asegúrese de que la opción de sesión NO_BROWSETABLE está establecida en OFF. |
| Característica | DELETE con la cláusula FROM | La cláusula FROM no se admite para DELETE instrucciones con un origen de tabla en procedimientos almacenados compilados de forma nativa. DELETE con la cláusula FROM es compatible cuando se utiliza para indicar la tabla de la que se eliminarán los datos. |
| Característica | UPDATE con la cláusula FROM | La cláusula FROM no es compatible con las instrucciones UPDATE en procedimientos almacenados compilados de forma nativa. |
| Característica | Procedimientos temporales | Los procedimientos almacenados temporales no se pueden compilar de forma nativa. Cree un procedimiento almacenado compilado de forma nativa que sea permanente o un procedimiento almacenado interpretado de Transact-SQL que sea temporal. |
| Nivel de aislamiento | LECTURA NO CONFIRMADA | Los procedimientos almacenados compilados de forma nativa no admiten el nivel de aislamiento READ UNCOMMITTED. Use un nivel de aislamiento compatible, como SNAPSHOT. |
| Nivel de aislamiento | READ COMMITTED (La lectura comprometida) | Los procedimientos almacenados compilados de forma nativa no admiten el nivel de aislamiento READ COMMITTED. Use un nivel de aislamiento compatible, como SNAPSHOT. |
| Característica | tablas temporales | En los procedimientos almacenados compilados de forma nativa no se pueden usar tablas de tempdb. En su lugar, use una variable de tabla o una tabla optimizada para memoria con DURABILITY=SCHEMA_ONLY. |
| Característica | DTC | No se puede tener acceso a las tablas con optimización para memoria ni a los procedimientos almacenados compilados de forma nativa desde transacciones distribuidas. En su lugar, use transacciones SQL. |
| Característica | EJECUTAR CON RECOMPILE | Los procedimientos almacenados compilados de forma nativa no admiten la opción WITH RECOMPILE . |
| Característica | Ejecución desde la conexión dedicada de administrador | Los procedimientos almacenados compilados de forma nativa no se pueden ejecutar desde la conexión de administrador dedicada (DAC). En su lugar, use una conexión normal. |
| Operación | punto de guardado | Los procedimientos almacenados compilados de manera nativa no se pueden invocar desde transacciones que tienen un punto de guardado activo. Elimine el punto de guardado de la transacción. |
| Operación | ALTER AUTHORIZATION | No es posible cambiar el propietario de una tabla optimizada para memoria o de un procedimiento almacenado compilado de forma nativa existente. Para cambiar la propiedad, elimine y vuelva a crear la tabla o el procedimiento. |
| Operador | OPENROWSET | No se admite este operador. Quite OPENROWSET de un procedimiento almacenado compilado de forma nativa. |
| Operador | OPENQUERY | No se admite este operador. Quite OPENQUERY del procedimiento almacenado compilado de forma nativa. |
| Operador | OPENDATASOURCE | No se admite este operador. Quite OPENDATASOURCE del procedimiento almacenado compilado de forma nativa. |
| Operador | OPENXML | No se admite este operador. Quite OPENXML del procedimiento almacenado compilado de forma nativa. |
| Operador | CONTAINSTABLE | No se admite este operador. Quite CONTAINSTABLE del procedimiento almacenado compilado de forma nativa. |
| Operador | FREETEXTTABLE | No se admite este operador. Quite FREETEXTTABLE del procedimiento almacenado compilado de forma nativa. |
| Característica | Funciones con valores de tabla | En los procedimientos almacenados compilados de forma nativa no se puede hacer referencia a funciones con valores de tabla. Una solución posible para esta restricción es agregar la lógica de las funciones con valores de tabla al cuerpo del procedimiento. |
| Operador | CHANGETABLE | No se admite este operador. Quite CHANGETABLE del procedimiento almacenado compilado de forma nativa. |
| Operador | GOTO | No se admite este operador. Use otras construcciones de procedimiento, como WHILE. |
| Operador | DESPLAZAMIENTO | No se admite este operador. Quite OFFSET del procedimiento almacenado compilado de forma nativa. |
| Operador | INTERSECT | No se admite este operador. Quite INTERSECT del procedimiento almacenado compilado de forma nativa. En algunos casos se puede usar INNER JOIN para obtener el mismo resultado. |
| Operador | EXCEPTO | No se admite este operador. Quite EXCEPT del procedimiento almacenado compilado de forma nativa. |
| Operador | Aplicar |
Se aplica a: SQL Server 2014 (12.x) y SQL Server a partir de SQL Server 2016 (13.x) No se admite este operador. Elimine APPLY del procedimiento almacenado compilado de forma nativa. Azure SQL Database y SQL Server a partir de SQL Server 2017 (14.x) admiten el operador APPLY en los módulos compilados de forma nativa. |
| Operador | PIVOT | No se admite este operador. Quite PIVOT del procedimiento almacenado compilado de forma nativa. |
| Operador | UNPIVOT | No se admite este operador. Quite UNPIVOT del procedimiento almacenado compilado de forma nativa. |
| Operador | CONTIENE | No se admite este operador. Quite CONTAINS del procedimiento almacenado compilado de forma nativa. |
| Operador | FREETEXT | No se admite este operador. Quite FREETEXT del procedimiento almacenado compilado de forma nativa. |
| Operador | TSEQUAL | No se admite este operador. Quite TSEQUAL del procedimiento almacenado compilado de forma nativa. |
| Operador | Me gusta | No se admite este operador. Quite LIKE del procedimiento almacenado compilado de forma nativa. |
| Operador | SIGUIENTE VALOR PARA | En los procedimientos almacenados compilados de forma nativa no se puede hacer referencia a secuencias. Obtenga el valor usando Transact-SQL interpretado y, a continuación, páselo al procedimiento almacenado compilado de forma nativa. Para obtener más información, consulte Implementar IDENTITY en una tabla optimizada para memoria. |
| Configurar opción | opción | SET No se pueden cambiar las opciones dentro de procedimientos almacenados compilados de forma nativa. Algunas opciones se pueden establecer con la instrucción BEGIN ATOMIC. Para obtener más información, consulte la sección sobre bloques atómicos en Procedimientos almacenados compilados de forma nativa. |
| Operando | TABLESAMPLE | No se admite este operador. Quitar TABLESAMPLE del procedimiento almacenado compilado de forma nativa. |
| Opción | RECOMPILE | Los procedimientos almacenados compilados de forma nativa se compilan en el momento de su creación. Quite RECOMPILE de la definición de procedimiento. Si ejecuta sp_recompile en un procedimiento almacenado compilado de forma nativa, hará que se vuelva a compilar en la siguiente ejecución. |
| Opción | CIFRADO | Esta opción no se admite. Quite ENCRYPTION de la definición de procedimiento. |
| Opción | PARA SU REPLICACIÓN | Los procedimientos almacenados compilados de forma nativa no se pueden crear para replicación. Se quitó FOR REPLICATION de la definición del procedimiento. |
| Opción | FOR XML | Esta opción no se admite. Quite FOR XML del procedimiento almacenado compilado de forma nativa. |
| Opción | PARA NAVEGAR | Esta opción no se admite. Quite FOR BROWSE del procedimiento almacenado compilado de forma nativa. |
| Sugerencia de combinación | HASH, MERGE | Los procedimientos almacenados compilados de forma nativa solo admiten las combinaciones de bucles anidados. No se admiten las combinaciones hash ni las combinaciones por mezcla. Elimine la sugerencia de unión. |
| Sugerencia de consulta | Sugerencia de consulta | Esta sugerencia de consulta no está en los procedimientos almacenados compilados de forma nativa. Para conocer las sugerencias de consulta compatibles, vea Sugerencias de consulta (Transact-SQL). |
| Opción | PORCENTAJE | Esta opción no se admite con cláusulas TOP . Quite PERCENT de la consulta en el procedimiento almacenado compilado de forma nativa. |
| Opción | CON VÍNCULOS |
Se aplica a: SQL Server 2014 (12.x) y SQL Server 2016 (13.x) Esta opción no se admite con cláusulas TOP . Quite WITH TIES de la consulta incluida en el procedimiento almacenado compilado de forma nativa. Azure SQL Database y SQL Server a partir de SQL Server 2017 (14.x) admiten TOP WITH TIES. |
| Función agregada | Función de agregación | No todas las funciones de agregación son compatibles. Para obtener más información sobre las funciones agregadas admitidas en los módulos T-SQL compilados de forma nativa, vea Supported Features for Natively Compiled T-SQL Modules (Características admitidas en los módulos T-SQL compilados de forma nativa). |
| Función de clasificación | Función de clasificación | Los procedimientos almacenados compilados de forma nativa no admiten funciones de categoría. Quítelas de la definición de procedimiento. |
| Función | Función | Esta función no se admite. Para obtener más información sobre las funciones admitidas en los módulos T-SQL compilados de forma nativa, vea Supported Features for Natively Compiled T-SQL Modules (Características admitidas en los módulos T-SQL compilados de forma nativa). |
| Sentencia | Sentencia | Esta declaración no se admite. Para obtener más información sobre las funciones admitidas en los módulos T-SQL compilados de forma nativa, vea Supported Features for Natively Compiled T-SQL Modules (Características admitidas en los módulos T-SQL compilados de forma nativa). |
| Característica | MIN y MAX usados con cadenas binarias y de caracteres | En los procedimientos almacenados compilados de forma nativa no se pueden usar las funciones de agregado MIN y MAX con valores de cadenas de caracteres y binarias. |
| Característica | AGRUPAR POR TODOS | En los procedimientos almacenados compilados de forma nativa, ALL no se puede utilizar con cláusulas GROUP BY. Elimine ALL de la cláusula GROUP BY. |
| Característica | GROUP BY () | No se admite la agrupación por una lista vacía. Quite la cláusula GROUP BY o incluya las columnas en la lista de agrupación. |
| Característica | Resumen | En los procedimientos almacenados compilados de forma nativa,ROLLUP no se puede utilizar con cláusulas GROUP BY . Quite ROLLUP de la definición de procedimiento. |
| Característica | CUBE | En los procedimientos almacenados compilados de forma nativa,CUBE no se puede utilizar con cláusulas GROUP BY . Quite CUBE de la definición de procedimiento. |
| Característica | CONJUNTOS DE AGRUPACIÓN | En los procedimientos almacenados compilados de forma nativa,GROUPING SETS no se puede utilizar con cláusulas GROUP BY . Quite GROUPING SETS de la definición de procedimiento. |
| Característica | “BEGIN TRANSACTION”, “COMMIT TRANSACTION” y “ROLLBACK TRANSACTION” | Utilice bloques ATÓMICOS para controlar las transacciones y tratar los errores. Para obtener más información, consulte Atomic Blocks. |
| Característica | Declaraciones de variable de tabla alineada. | Las variables de tabla deben hacer referencia explícitamente a los tipos definidos de tabla optimizada para memoria. Debería crear un tipo de tabla optimizada para memoria y usar ese tipo para la declaración de la variable, en lugar de especificar el tipo en línea. |
| Característica | Tablas basadas en disco | No se puede tener acceso a las tablas basadas en disco desde procedimientos almacenados compilados de forma nativa. Quite las referencias a las tablas basadas en disco desde los procedimientos almacenados compilados de forma nativa. O bien, migre las tablas basadas en disco a la memoria optimizada. |
| Característica | Vistas | No se puede tener acceso a las vistas desde procedimientos almacenados compilados de forma nativa. En lugar de las vistas, haga referencia a las tablas base subyacentes. |
| Característica | Funciones con valores de tabla |
Se aplica a: Azure SQL Database y SQL Server a partir de SQL Server 2016 (13.x) No se puede acceder a funciones de tabla con varias instrucciones desde módulos T-SQL compilados de forma nativa. Se admiten las funciones con valores de tabla en línea, pero deben crearse con NATIVE_COMPILATION. Se aplica a: SQL Server 2014 (12.x) En los módulos T-SQL compilados de forma nativa no se puede hacer referencia a funciones con valores de tabla. |
| Opción | IMPRIMIR | Quitar referencia |
| Característica | DDL | No se admite DDL en los módulos T-SQL compilados de forma nativa. |
| Opción | STATISTICS XML | No admitida. Cuando se ejecuta una consulta, con STATISTICS XML habilitado, el contenido XML se devuelve sin la parte correspondiente al procedimiento almacenado compilado de forma nativa. |
Transacciones que tienen acceso a tablas con optimización para memoria
En la tabla siguiente se enumeran las características y las palabras clave de Transact-SQL que pueden aparecer en el texto de un mensaje de error relacionado con transacciones que tienen acceso a tablas optimizadas para memoria, así como la acción correctiva para resolver el error.
| Tipo | Nombre | Solución |
|---|---|---|
| Característica | punto de guardado | No se admite la creación de puntos de guardado explícitos en transacciones que acceden a tablas optimizadas para memoria. |
| Característica | transacción vinculada | Las sesiones vinculadas no pueden participar en transacciones que acceden a tablas optimizadas para la memoria. No enlace la sesión antes de ejecutar el procedimiento. |
| Característica | DTC | Las transacciones que tienen acceso a tablas optimizadas para memoria no pueden ser transacciones distribuidas. |