Reglas de evaluación para la migración de SQL Server a Azure SQL Database
Se aplica a: Azure SQL Database
Las herramientas de migración validan la instancia de origen de SQL Server mediante la ejecución de varias reglas de evaluación para identificar los problemas que deben solucionarse antes de migrar la base de datos de SQL Server a Azure SQL Database.
En este artículo se proporciona una lista de las reglas que se usan para evaluar la viabilidad de la migración de la base de datos de SQL Server a Azure SQL Database.
Resumen de las reglas
BULK INSERT
Título: No se admite BULK INSERT con orígenes de datos de blobs que no son de Azure en Azure SQL Database.
Categoría: Problema
Descripción
Azure SQL Database no puede acceder a recursos compartidos de archivos ni a carpetas de Windows. Vea en la sección "Objetos afectados" los usos específicos de las instrucciones de BULK INSERT
que no hacen referencia a un BLOB de Azure. Los objetos con BULK INSERT
en los que el origen no sea Azure Blob Storage no funcionan después de migrar a Azure SQL Database.
Recomendación
Debe convertir las instrucciones de BULK INSERT
que usan archivos locales o recursos compartidos de archivos para que usen archivos de Azure Blob Storage en su lugar, al realizar la migración a Azure SQL Database. También puede migrar a SQL Server en la VM de Azure.
Cláusula COMPUTE
Título: La cláusula COMPUTE ya no se admite y se ha quitado.
Categoría: Advertencia
Descripción
La cláusula COMPUTE genera totales que aparecen como columnas de resumen adicionales al final del conjunto de resultados. Sin embargo, esta cláusula ya no se admite en Azure SQL Database.
Recomendación
En su lugar, se debe volver a escribir el módulo T-SQL con el operador ROLLUP. En el código siguiente se muestra cómo se puede reemplazar COMPUTE
por ROLLUP
:
USE AdventureWorks2022;
GO
SELECT SalesOrderID,
UnitPrice,
UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID COMPUTE SUM(UnitPrice),
SUM(UnitPriceDiscount) BY SalesOrderID;
GO
SELECT SalesOrderID,
UnitPrice,
UnitPriceDiscount,
SUM(UnitPrice) AS UnitPrice,
SUM(UnitPriceDiscount) AS UnitPriceDiscount
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID,
UnitPrice,
UnitPriceDiscount
WITH ROLLUP;
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
Ensamblados CLR
Título: Los ensamblados CLR de SQL no se admiten en Azure SQL Database.
Categoría: Problema
Descripción
Azure SQL Database no admite ensamblados CLR de SQL.
Recomendación
Actualmente, no hay manera de conseguirlo en Azure SQL Database. Las soluciones alternativas recomendadas requieren cambios en el código de la aplicación y la base de datos para usar solo los ensamblados admitidos por Azure SQL Database. También puede migrar a Azure SQL Managed Instance o SQL Server en Azure Virtual Machines.
Para obtener más información, consulte Diferencias de Transact-SQL no admitidas en SQL Database.
Proveedor de servicios criptográficos
Título: Se ha encontrado un uso de CREATE CRYPTOGRAPHIC PROVIDER o ALTER CRYPTOGRAPHIC PROVIDER, que no se admite en Azure SQL Database.
Categoría: Problema
Descripción
Azure SQL Database no es compatible con las instrucciones CRYPTOGRAPHIC PROVIDER porque no puede acceder a los archivos. Consulte en la sección de objetos afectados los usos específicos de las instrucciones CRYPTOGRAPHIC PROVIDER. Los objetos con CREATE CRYPTOGRAPHIC PROVIDER
o ALTER CRYPTOGRAPHIC PROVIDER
no funcionan correctamente después de migrar a Azure SQL Database.
Recomendación
Revise los objetos con CREATE CRYPTOGRAPHIC PROVIDER
o ALTER CRYPTOGRAPHIC PROVIDER
. En los objetos necesarios, quite los usos de estas características. También puede migrar a SQL Server en la VM de Azure.
Referencias entre bases de datos
Título: Las consultas entre bases de datos no se admiten en Azure SQL Database.
Categoría: Problema
Descripción
Las bases de datos de este servidor usan consultas entre bases de datos, que no se admiten en Azure SQL Database.
Recomendación
Azure SQL Database no admite consultas entre bases de datos. Se recomiendan las siguientes acciones:
- Migre las bases de datos dependientes a Azure SQL Database y use la funcionalidad de consulta de Base de datos elástica (actualmente en versión preliminar) para realizar consultas entre bases de datos de Azure SQL.
- Mueva los conjuntos de datos dependientes de otras bases de datos a la base de datos que se está migrando.
- Migre a Azure SQL Managed Instance.
- Migre a SQL Server en las máquinas virtuales de Azure.
Para obtener más información, consulte Información general sobre las consultas elásticas de Azure SQL Database (versión preliminar).
Compatibilidad de bases de datos
Título: Azure SQL Database no admite niveles de compatibilidad por debajo de 100.
Categoría: Advertencia
Descripción
El nivel de compatibilidad de la base de datos es una preciada herramienta que sirve para ayudar con la modernización de las bases de datos, ya que permite actualizar el motor de base de datos de SQL Server mientras se conserva el estado funcional de las aplicaciones conectadas porque se mantiene el mismo nivel de compatibilidad de la base de datos previo a la actualización. Azure SQL Database no admite niveles de compatibilidad por debajo de 100.
Recomendación
Evalúe si la funcionalidad de la aplicación está intacta cuando el nivel de compatibilidad de la base de datos se actualiza a 100 en Azure SQL Managed Instance. También puede migrar a SQL Server en la VM de Azure.
Correo electrónico de base de datos
Título: No se admite el Correo electrónico de base de datos en Azure SQL Database.
Categoría: Advertencia
Descripción
Este servidor usa la característica Correo electrónico de base de datos, que no se admite en Azure SQL Database.
Recomendación
Considere la posibilidad de migrar a Azure SQL Managed Instance que admite el Correo electrónico de base de datos. Como alternativa, considere la posibilidad de usar Azure Functions y SendGrid para llevar a cabo la funcionalidad de correo en Azure SQL Database.
Alias de entidad de seguridad de base de datos
Título: SYS.DATABASE_PRINCIPAL_ALIASES ya no se admite y se ha quitado.
Categoría: Problema
Descripción
sys.database_principal_aliases
ya no se admite y se ha quitado de Azure SQL Database.
Recomendación
Utilice roles en lugar de alias.
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
Opción DISABLE_DEF_CNST_CHK
Título: Se ha descontinuado y quitado la opción SET DISABLE_DEF_CNST_CHK.
Categoría: Problema
Descripción
Se ha descontinuado y quitado la opción SET DISABLE_DEF_CNST_CHK de Azure SQL Database.
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
Sugerencia FASTFIRSTROW
Título: La sugerencia de consulta FASTFIRSTROW ya no se admite y se ha quitado.
Categoría: Advertencia
Descripción
La sugerencia de consulta FASTFIRSTROW ya no se admite y se ha quitado de Azure SQL Database.
Recomendación
En lugar de la sugerencia de consulta FASTFIRSTROW, use OPTION (FAST n).
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
FILESTREAM
Título: FILESTREAM no se admite en Azure SQL Database
Categoría: Problema
Descripción
La característica FILESTREAM, que permite almacenar datos no estructurados, como documentos de texto, imágenes y vídeos, en el sistema de archivos NTFS, no se admite en Azure SQL Database.
Recomendación
Cargue los archivos no estructurados en Azure Blob Storage y almacene los metadatos relacionados con estos archivos (nombre, tipo, ubicación de dirección URL, clave de almacenamiento, etc.) en Azure SQL Database. Es posible que tenga que volver a diseñar la aplicación para habilitar la transmisión de blobs desde la instancia de Azure SQL Database y hacia ella. También puede migrar a SQL Server en la VM de Azure.
Para obtener más información, consulte Blog de la transmisión de blobs hacia la instancia de Azure SQL y desde ella.
Servidor vinculado
Título: La funcionalidad de servidor vinculado no se admite en Azure SQL Database.
Categoría: Problema
Descripción
Los servidores vinculados permiten al Motor de base de datos de SQL Server ejecutar comandos en orígenes de datos OLE DB fuera de la instancia de SQL Server.
Recomendación
Azure SQL Database no admite la funcionalidad de servidor vinculado. Se recomiendan las siguientes acciones para eliminar la necesidad de servidores vinculados:
- Identifique los conjuntos de datos dependientes de instancias remotas de SQL Server y considere la posibilidad de moverlos a la base de datos que se está migrando.
- Migre las bases de datos dependientes a Azure y use la funcionalidad de consulta de Base de datos elástica (actualmente en versión preliminar) para realizar consultas entre bases de datos de Azure SQL Database.
Para obtener más información, consulte Información general sobre las consultas elásticas de Azure SQL Database (versión preliminar).
MS DTC
Título: BEGIN DISTRIBUTED TRANSACTION no se admite en Azure SQL Database.
Categoría: Problema
Descripción
La transacción distribuida iniciada por Transact SQL BEGIN DISTRIBUTED TRANSACTION y administrada por el Coordinador de transacciones distribuidas de Microsoft (MS DTC) no se admite en Azure SQL Database.
Recomendación
Revise la sección de objetos afectados en Azure Migrate para ver todos los objetos que usan BEGIN DISTRUBUTED TRANSACTION. Considere la posibilidad de migrar las bases de datos de participantes a Azure SQL Managed Instance donde se admiten las transacciones distribuidas entre varias instancias.
Para obtener más información, consulte Transacciones entre varios servidores de Azure SQL Managed Instance.
También puede migrar a SQL Server en la VM de Azure.
OPENROWSET (masivo)
Título: OpenRowSet no se admite en operaciones masivas con orígenes de datos que no son de Azure Blob Storage en Azure SQL Database.
Categoría: Problema
Descripción: OPENROWSET admite operaciones masivas a través de un proveedor integrado BULK que permite que se lean los datos de un archivo y se devuelvan como un conjunto de filas. No se admite OPENROWSET con orígenes de datos que no son Azure Blob Storage en Azure SQL Database.
Recomendación
Azure SQL Database no puede acceder a los recursos compartidos de archivos ni a las carpetas de Windows, por lo que los archivos se deben importar desde Azure Blob Storage. Por lo tanto, solo se admite el tipo de blob DATASOURCE en la función OPENROWSET. También puede migrar a SQL Server en las máquinas virtuales de Azure.
Para obtener más información, consulte Resolución de diferencias de Transact-SQL durante la migración a SQL Database.
OPENROWSET (proveedor)
Título: No se admite OpenRowSet con proveedor de SQL o que no es de SQL en Azure SQL Database.
Categoría: Problema
Descripción
OpenRowSet con proveedor de SQL o que no es SQL es una alternativa para acceder a las tablas de un servidor vinculado y es un método ad hoc de una sola vez para conectarse y acceder a datos remotos utilizando OLE DB. No se admite OpenRowSet con proveedor de SQL o que no es de SQL en Azure SQL Database.
Recomendación
Azure SQL Database admite OPENROWSET solo para importar desde Azure Blob Storage. También puede migrar a SQL Server en la VM de Azure.
Para obtener más información, consulte Resolución de diferencias de Transact-SQL durante la migración a SQL Database.
Combinación externa izquierda no ANSI
Título: Ya no se admite la combinación externa izquierda de estilo no ANSI y se ha quitado.
Categoría: Advertencia
Descripción
La combinación externa izquierda de estilo no ANSI ya no se admite y se ha quitado de Azure SQL Database.
Recomendación
Utilice la sintaxis de unión de ANSI.
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
Combinación externa derecha no ANSI
Título: Ya no se admite la combinación externa derecha de estilo no ANSI y se ha quitado.
Categoría: Advertencia
Descripción
La combinación externa derecha de estilo no ANSI ya no se admite y se ha quitado de Azure SQL Database.
Recomendación
Utilice la sintaxis de unión de ANSI.
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
Columna Next
Título: Las tablas y columnas denominadas NEXT darán lugar a un error en Azure SQL Database.
Categoría: Problema
Descripción
Se detectaron tablas o columnas denominadas NEXT. Las secuencias, que se introdujeron en Microsoft SQL Server, usan la función NEXT VALUE FOR del estándar ANSI. Si una tabla o columna se denomina NEXT y la columna tiene el alias VALUE, y si se omite la palabra clave AS del estándar ANSI, la instrucción resultante puede producir un error.
Recomendación
Reescriba las instrucciones para incluir la palabra clave AS del estándar ANSI cuando asigne un alias a una tabla o columna. Por ejemplo, cuando un columna se denomina NEXT y tiene el alias VALUE, la consulta SELECT NEXT VALUE FROM TABLE
produce un error y debe reescribirse como SELECT NEXT AS VALUE FROM TABLE. Igualmente, cuando una tabla se denomina NEXT y tiene el alias VALUE, la consulta SELECT Col1 FROM NEXT VALUE
produce un error y debe reescribirse como SELECT Col1 FROM NEXT AS VALUE
.
RAISERROR
Título: Las llamadas a RAISERROR de estilo heredado se deben reemplazar por equivalentes modernos.
Categoría: Advertencia
Descripción
Las llamadas a RAISERROR, como el ejemplo siguiente, se denominan de estilo heredado porque no incluyen las comas y los paréntesis. RAISERROR 50001 'this is a test'
. Este método de llamada a RAISERROR ya no se admite y se ha quitado de Azure SQL Database.
Recomendación
Vuelva a escribir la instrucción con la sintaxis de RAISERROR actual o evalúe si es viable el enfoque moderno de BEGIN TRY { } END TRY BEGIN CATCH { THROW; } END CATCH
.
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
Auditorías de servidor
Título: Uso de las características de auditoría de Azure SQL Database para reemplazar las auditorías de servidor
Categoría: Advertencia
Descripción
Las auditorías de servidor no se admite en Azure SQL Database.
Recomendación
Considere la posibilidad de usar las características de auditoría de Azure SQL Database para reemplazar las auditorías de servidor. Azure SQL admite las auditorías y las características están más enriquecidas que en SQL Server. Azure SQL Database puede auditar varias acciones y eventos de base de datos, entre los que se incluyen el acceso a datos, los cambios de esquema (DDL), los cambios de datos (DML), las cuentas, los roles y los permisos (DCL), y las excepciones de seguridad. La auditoría de SQL Database aumenta la capacidad de la organización de obtener información sobre los eventos y los cambios que se producen en la base de datos, incluidas las actualizaciones y las consultas efectuadas en los datos. También puede migrar a Azure SQL Managed Instance o SQL Server en Azure Virtual Machines.
Para más información, vea Auditoría para Azure SQL Database y Azure Synapse Analytics.
Credenciales de servidor
Título: No se admite la credencial con ámbito de servidor en Azure SQL Database.
Categoría: Advertencia
Descripción
Una credencial es un registro que contiene la información de autenticación (credenciales) necesaria para conectarse a un recurso situado fuera de SQL Server. Azure SQL Database admite las credenciales de base de datos, pero no las creadas en el ámbito de SQL Server.
Recomendación
Azure SQL Database admite las credenciales con ámbito de base de datos. Convierta las credenciales con ámbito de servidor en credenciales con ámbito de base de datos. También puede migrar a Azure SQL Managed Instance o SQL Server en Azure Virtual Machines.
Para más información, consulte CREATE DATABASE SCOPED CREDENTIAL.
Service Broker
Título: La característica Service Broker no se admite en Azure SQL Database.
Categoría: Problema
Descripción
SQL Server Service Broker proporciona compatibilidad nativa de aplicaciones de mensajería y de puesta en cola en el Motor de base de datos de SQL Server. La característica Service Broker no se admite en Azure SQL Database.
Recomendación
La característica Service Broker no se admite en Azure SQL Database. Considere la posibilidad de migrar a Azure SQL Managed Instance que admite Service Broker dentro de la misma instancia. También puede migrar a SQL Server en la VM de Azure.
Desencadenadores de ámbito de servidor
Título: No se admiten desencadenadores con ámbito de servidor en Azure SQL Database.
Categoría: Advertencia
Descripción
Un desencadenador es un tipo especial de procedimiento almacenado que se ejecuta en respuesta a una determinada acción en una tabla, como la inserción, la eliminación o la actualización de datos. No se admiten desencadenadores con ámbito de servidor en Azure SQL Database. Azure SQL Database no admite las siguientes opciones para los desencadenadores: FOR LOGON, ENCRYPTION, WITH APPEND, NOT FOR REPLICATION, EXTERNAL NAME (no hay compatibilidad con el método externo), ALL SERVER (desencadenador DDL), desencadenar en un evento LOGON (desencadenador de inicio de sesión), Azure SQL Database no admite desencadenadores CLR.
Recomendación
Use desencadenadores de nivel de base de datos en su lugar. También puede migrar a Azure SQL Managed Instance o SQL Server en Azure Virtual Machines.
Para obtener más información, consulte Resolución de diferencias de Transact-SQL durante la migración a SQL Database.
Trabajos del Agente SQL
Título: Los trabajos del Agente SQL Server no están disponibles en Azure SQL Database.
Categoría: Advertencia
Descripción
El Agente SQL Server es un servicio de Microsoft Windows que ejecuta tareas administrativas programadas, denominadas trabajos, en SQL Server. Los trabajos del Agente SQL Server no están disponibles en Azure SQL Database.
Recomendación
Use trabajos elásticos, que son el reemplazo de los trabajos de Agente SQL Server en Azure SQL Database. Los trabajos elásticos para Azure SQL Database permiten ejecutar de forma confiable scripts de T-SQL que abarcan varias bases de datos al tiempo que realizan reintentos automáticos y ofrecen garantías de finalización futura. También puede considerar la posibilidad de migrar a Azure SQL Managed Instance o SQL Server en Azure Virtual Machines. Para obtener más información, consulte Trabajos elásticos para Azure SQL Database.
Tamaño de SQL Database
Título: Azure SQL Database no admite un tamaño de base de datos superior a 100 TB.
Categoría: Problema
Descripción
El tamaño de la base de datos es mayor que el tamaño máximo admitido de 100 TB.
Recomendación
Evalúe si los datos se pueden archivar o comprimir en varias bases de datos. También puede migrar a SQL Server en la VM de Azure.
Para obtener más información, consulte los límites de recursos de núcleo virtual.
SQL Mail
Título: SQL Mail se ha descontinuado.
Categoría: Advertencia
Descripción
SQL Mail se ha descontinuado y quitado de Azure SQL Database.
Recomendación
Considere la posibilidad de migrar a Azure SQL Managed Instance o SQL Server en Azure Virtual Machines y usar el Correo electrónico de base de datos.
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
SystemProcedures110
Título: Se han detectado instrucciones que hacen referencia a procedimientos almacenados del sistema que se han quitado y no están disponibles en Azure SQL Database.
Categoría: Advertencia
Descripción
No se pueden usar en Azure SQL Database los siguientes procedimientos almacenados extendidos y del sistema no admitidos: sp_dboption
, sp_addserver
, sp_dropalias
, sp_activedirectory_obj
, sp_activedirectory_scp
y sp_activedirectory_start
.
Recomendación
Quite las referencias a los procedimientos del sistema no admitidos que se han quitado de Azure SQL Database.
Para obtener más información, consulte Funcionalidad del motor de base de datos descontinuada en SQL Server.
Marcas de seguimiento
Título: Azure SQL Database no admite marcas de seguimiento
Categoría: Advertencia
Descripción
Las marcas de seguimiento se utilizan para establecer temporalmente características específicas del servidor o para desactivar un comportamiento determinado. Las marcas de seguimiento se suelen utilizar para diagnosticar problemas de rendimiento o para depurar procedimientos almacenados o sistemas complejos. Azure SQL Database no admite marcas de seguimiento.
Recomendación
Revise la sección de objetos afectados en Azure Migrate para ver todas las marcas de seguimiento que no se admiten en Azure SQL Database y evaluar si se pueden quitar. También puede migrar a Azure SQL Managed Instance que admite un número limitado de marcas de seguimiento globales o SQL Server en una máquina virtual de Azure.
Para obtener más información, consulte Resolución de diferencias de Transact-SQL durante la migración a SQL Database.
Autenticación de Windows
Título: Los usuarios de base de datos asignados con la autenticación de Windows (seguridad integrada) no se admiten en Azure SQL Database.
Categoría: Advertencia
Descripción
Azure SQL Database admite dos tipos de autenticación:
- Autenticación de SQL: usa un nombre de usuario y una contraseña.
- Método de autenticación de Microsoft Entra: usa las identidades administradas por Microsoft Entra ID (antes llamado Azure Active Directory) y es compatible con dominios administrados e integrados.
Los usuarios de base de datos asignados con la autenticación de Windows (seguridad integrada) no se admiten en Azure SQL Database.
Recomendación
Federe el Active Directory local con Microsoft Entra ID. A continuación, la identidad de Windows se puede reemplazar por las identidades equivalentes de Microsoft Entra. También puede migrar a SQL Server en la VM de Azure.
Para obtener más información, consulte Funcionalidades de seguridad de SQL Database.
xp_cmdshell
Título: No se admite xp_cmdshell en Azure SQL Database.
Categoría: Problema
Descripción
xp_cmdshell
, que genera un shell de comandos de Windows y pasa una cadena para su ejecución, no se admite en Azure SQL Database.
Recomendación
Revise la sección de objetos afectados en Azure Migrate para ver todos los objetos que usan xp_cmdshell
y evaluar si se puede quitar la referencia a xp_cmdshell
o al objeto afectado. Considere también la posibilidad de explorar Azure Automation que ofrece un servicio de automatización y configuración basado en la nube. También puede migrar a SQL Server en la VM de Azure.
Contenido relacionado
- Guía de migración: SQL Server a Azure SQL Database
- Servicios y herramientas disponibles para escenarios de migración de datos
- ¿Qué es Azure SQL Database?
- Calculadora del costo total de propiedad de Azure
- Cloud Adoption Framework para Azure
- Procedimientos recomendados para la gestión de los costos y los ajustes de tamaño de las cargas de trabajo migradas a Azure
- Data Access Migration Toolkit (versión preliminar)
- Información general del Asistente para experimentación con bases de datos