Regras de avaliação para a migração do Banco de Dados SQL Server para SQL do Azure
Aplica-se a: Banco de Dados SQL do Azure
As ferramentas de migração validam sua instância de SQL Server de origem executando várias regras de avaliação para identificar problemas que devem ser resolvidos antes de migrar seu banco de dados SQL Server para o Banco de Dados SQL do Azure.
Este artigo fornece uma lista das regras usadas para avaliar a viabilidade de migrar seu banco de dados SQL Server para o Banco de Dados SQL do Azure.
Resumo de regras
BULK INSERT
Título: não há suporte para BULK INSERT com uma fonte de dados de blob que não seja do Azure no Banco de Dados SQL do Azure.
Categoria: problema
Descrição
O Banco de Dados SQL do Azure não pode acessar compartilhamentos de arquivo ou pastas do Windows. Confira a seção "Objetos afetados" para ver os usos específicos das instruções BULK INSERT
que não fazem referência a um blob do Azure. Objetos com BULK INSERT
em que a origem não é o armazenamento de blobs do Azure não vão funcionar após a migração para o Banco de Dados SQL do Azure.
Recomendação
Converta as instruções BULK INSERT
que usam arquivos locais ou compartilhamentos de arquivos para usar os arquivos do armazenamento de blobs do Azure ao migrar para a Instância Gerenciada do Banco de Dados SQL do Azure. Como alternativa, migre para o SQL Server em VMs do Azure.
Cláusula COMPUTE
Título: não há mais suporte para a cláusula COMPUTE. Ela foi removida.
Categoria: aviso
Descrição
A cláusula de COMPUTAÇÃO gera totais que são exibidos como colunas de resumo adicionais no fim do conjunto de resultados. No entanto, essa cláusula não tem mais suporte no Banco de Dados SQL do Azure.
Recomendação
É necessário reescrever o módulo T-SQL usando o operador ROLLUP. O código abaixo demonstra como substituir a cláusula 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 obter mais informações, confira Funcionalidade Descontinuada do Mecanismo de Banco de Dados no SQL Server.
Assemblies CLR
Título: não há suporte para assemblies de CLR SQL no Banco de Dados SQL do Azure
Categoria: problema
Descrição
O Banco de Dados SQL do Azure não dá suporte a assemblies CLR do SQL.
Recomendação
Atualmente, não há como fazer isso no Banco de Dados SQL do Azure. As soluções alternativas recomendadas exigem alterações no código e no banco de dados do aplicativo para usar somente assemblies com suporte do Banco de Dados SQL do Azure. Como alternativa, migre para a Instância Gerenciada de SQL do Azure ou para o SQL Server em Máquinas Virtuais do Azure.
Para obter mais informações, confira Diferenças de Transact-SQL sem suporte no Banco de Dados SQL.
Provedor de criptografia
Título: foi encontrado um uso de CREATE CRYPTOGRAPHIC PROVIDER ou ALTER CRYPTOGRAPHIC PROVIDER, para os quais não há suporte no Banco de Dados SQL do Azure
Categoria: problema
Descrição
O Banco de Dados SQL do Azure não dá suporte a instruções de CRYPTOGRAPHIC PROVIDER porque ele não pode acessar arquivos. Confira a seção Objetos afetados para ver usos específicos das instruções CRYPTOGRAPHIC PROVIDER. Objetos com CREATE CRYPTOGRAPHIC PROVIDER
ou ALTER CRYPTOGRAPHIC PROVIDER
não funcionarão corretamente após a migração para o Banco de Dados SQL do Azure.
Recomendação
Revise os objetos com CREATE CRYPTOGRAPHIC PROVIDER
ou ALTER CRYPTOGRAPHIC PROVIDER
. Remova os usos desses recursos de todos os objetos necessários. Como alternativa, migre para o SQL Server em VMs do Azure.
Referências de banco de dados
Título: não há suporte para consultas entre bancos de dados no Banco de Dados SQL do Azure
Categoria: problema
Descrição
Os bancos de dados neste servidor usam consultas entre bancos de dados, mas não há suporte para isso no Banco de Dados SQL do Azure.
Recomendação
O Banco de Dados SQL do Azure não dá suporte a consultas entre bancos de dados. As seguintes ações são recomendadas:
- Migre os bancos de dados dependentes para o Banco de Dados SQL do Azure e use a funcionalidade de Consulta de Banco de Dados Elástico (atualmente em visualização) para consultar os bancos de dados SQL do Azure.
- Mova os conjuntos de dados dependentes de outros bancos para o banco de dados que está sendo migrado.
- Migre para a Instância Gerenciada de SQL do Azure.
- Migrar para o SQL Server em Máquinas Virtuais do Azure.
Para obter mais informações, confira Visão geral da consulta elástica do Banco de Dados SQL do Azure (versão prévia).
Compatibilidade do banco de dados
Título: o Banco de Dados SQL do Azure não dá suporte a níveis de compatibilidade abaixo de 100.
Categoria: aviso
Descrição
O nível de compatibilidade do banco de dados é uma ferramenta valiosa que ajuda na modernização do banco de dados, permitindo a atualização do Mecanismo de Banco de Dados do SQL Server e a manutenção do status funcional dos aplicativos conectados, garantindo o mesmo nível de compatibilidade do banco de dados de antes da atualização. O Banco de Dados SQL do Azure não dá suporte a níveis de compatibilidade abaixo de 100.
Recomendação
Avalie se a funcionalidade do aplicativo está intacta quando o nível de compatibilidade do banco de dados é atualizado para 100 na Instância Gerenciada de SQL do Azure. Como alternativa, migre para o SQL Server em VMs do Azure.
Database Mail
Título: não há suporte para Database Mail no Banco de Dados SQL do Azure.
Categoria: aviso
Descrição
Esse servidor usa o recurso Database Mail, que não é compatível com o Banco de Dados SQL do Azure.
Recomendação
Considere a migração para a Instância Gerenciada de SQL do Azure que dá suporte ao Database Mail. Como alternativa, considere usar o Azure Functions e o SendGrid para ter a funcionalidade de email no Banco de Dados SQL do Azure.
Alias da entidade de segurança do banco de dados
Título: não há mais suporte para SYS. DATABASE_PRINCIPAL_ALIASES. Ele foi removido.
Categoria: problema
Descrição
sys.database_principal_aliases
não é mais compatível com o Banco de Dados SQL do Azure e foi removida dele.
Recomendação
Use funções em vez de aliases.
Para obter mais informações, confira Funcionalidade Descontinuada do Mecanismo de Banco de Dados no SQL Server.
Opção DISABLE_DEF_CNST_CHK
Título: a opção SET DISABLE_DEF_CNST_CHK foi descontinuada e removida.
Categoria: problema
Descrição
A opção SET DISABLE_DEF_CNST_CHK foi descontinuada e removida no Banco de Dados SQL do Azure.
Para obter mais informações, confira Funcionalidade Descontinuada do Mecanismo de Banco de Dados no SQL Server.
Dica FASTFIRSTROW
Título: não há mais suporte para a dica de consulta FASTFIRSTROW. Ela foi removida.
Categoria: aviso
Descrição
A dica de consulta FASTFIRSTROW não é mais compatível com o Banco de Dados SQL do Azure e foi removida dele.
Recomendação
Em vez da dica de consulta FASTFIRSTROW, use OPTION (FAST n).
Para obter mais informações, confira Funcionalidade Descontinuada do Mecanismo de Banco de Dados no SQL Server.
FILESTREAM
Título: não há suporte para o FILESTREAM no Banco de Dados SQL do Azure
Categoria: problema
Descrição
O recurso FILESTREAM, que permite armazenar dados não estruturados, como documentos de texto, imagens e vídeos no sistema de arquivos NTFS não é compatível com o Banco de Dados SQL do Azure.
Recomendação
Carregue os arquivos não estruturados no armazenamento de Blobs do Azure e armazene os metadados relacionados a esses arquivos (nome, tipo, local da URL, chave de armazenamento etc.) no Banco de Dados SQL do Azure. Talvez seja necessário refazer a engenharia de seu aplicativo para habilitar os blobs de streaming de e para o Banco de Dados SQL do Azure. Como alternativa, migre para o SQL Server em VMs do Azure.
Para obter mais informações, confira o Blog dos blobs de streaming do SQL do Azure e para ele.
Servidor vinculado
Título: não há suporte para a funcionalidade de servidor vinculado no Banco de Dados SQL do Azure
Categoria: problema
Descrição
Os servidores vinculados permitem que o Mecanismo de Banco de Dados do SQL Server execute comandos em fontes de dados OLE DB fora da instância do SQL Server.
Recomendação
O Banco de Dados SQL do Azure não dá suporte à funcionalidade de servidor vinculado. As seguintes ações são recomendadas para eliminar a necessidade de servidores vinculados:
- Identifique os conjuntos de dados dependentes dos servidores SQL remotos e considere movê-los para o banco de dados que está sendo migrado.
- Migre os bancos de dados dependentes para o Azure e use a funcionalidade de Consulta de Banco de Dados Elástico (visualização) para consultar os bancos de dados no Banco de Dados SQL do Azure.
Para obter mais informações, confira Visão geral da consulta elástica do Banco de Dados SQL do Azure (versão prévia).
MS DTC
Título: não há suporte para BEGIN DISTRIBUTED TRANSACTION no Banco de Dados SQL do Azure.
Categoria: problema
Descrição
A transação distribuída iniciada pelo Transact SQL BEGIN DISTRIBUTED TRANSACTION e gerenciada pelo MS DTC (Coordenador de Transações Distribuídas da Microsoft) não é compatível com o Banco de Dados SQL do Azure.
Recomendação
Revise a seção de objetos afetados do Migrações para Azure para ver todos os objetos que usam BEGIN DISTRUBUTED TRANSACTION. Considere migrar os bancos de dados participantes para a Instância Gerenciada de SQL do Azure, que dá suporte a transações distribuídas entre várias instâncias.
Para mais informações, confira Transações em vários servidores da Instância Gerenciada de SQL do Azure.
Como alternativa, migre para o SQL Server em VMs do Azure.
OPENROWSET (em massa)
Título: não há suporte para OpenRowSet usado em operação em massa com uma fonte de dados de armazenamento de blob que não seja do Azure no Banco de Dados SQL do Azure.
Categoria: problema
Descrição A função OPENROWSET dá suporte a operações em massa por meio de um provedor BULK interno que permite que dados de um arquivo sejam lidos e retornados como um conjunto de linhas. Não há suporte para OPENROWSET com uma fonte de dados de armazenamento de blobs que não seja do Azure no Banco de Dados SQL do Azure.
Recomendação
O Banco de Dados SQL do Azure não pode acessar compartilhamentos de arquivo e pastas do Windows. Os arquivos devem ser importados do armazenamento de blobs do Azure. Portanto, somente o blob tipo DATASOURCE tem suporte na função OPENROWSET. Como alternativa, migre para o SQL Server em máquinas virtuais do Azure
Para obter mais informações, confira Resolvendo diferenças de Transact-SQL durante a migração para o Banco de Dados SQL.
OPENROWSET (provedor)
Título: não há suporte para OpenRowSet com provedor SQL ou não SQL no Banco de Dados SQL do Azure.
Categoria: problema
Descrição
O OpenRowSet com provedor SQL ou não SQL é uma alternativa para acessar tabelas em um servidor vinculado e se trata de um método de uso único e ad hoc para conexão e acesso a dados remotos por meio de OLE DB. Não há mais suporte para OpenRowSet com provedor SQL ou não SQL no Banco de Dados SQL do Azure.
Recomendação
O Banco de Dados SQL do Azure dá suporte a OPENROWSET somente para importar do armazenamento de blobs do Azure. Como alternativa, migre para o SQL Server em VMs do Azure.
Para obter mais informações, confira Resolvendo diferenças de Transact-SQL durante a migração para o Banco de Dados SQL.
Junção externa esquerda não-ANSI
Título: não há mais suporte para a junção externa esquerda em um estilo diferente de ANSI. Ela foi removida.
Categoria: aviso
Descrição
Não há mais suporte para a junção externa esquerda em um estilo diferente de ANSI e ela foi removida do Banco de Dados SQL do Azure.
Recomendação
Use a sintaxe de junção ANSI.
Para obter mais informações, confira Funcionalidade Descontinuada do Mecanismo de Banco de Dados no SQL Server.
Junção externa direita não-ANSI
Título: não há mais suporte para a junção externa direita em um estilo diferente de ANSI. Ela foi removida.
Categoria: aviso
Descrição
Não há mais suporte para a junção externa direita em um estilo diferente de ANSI e ela foi removida do Banco de Dados SQL do Azure.
Recomendação
Use a sintaxe de junção ANSI.
Para obter mais informações, confira Funcionalidade Descontinuada do Mecanismo de Banco de Dados no SQL Server.
Próxima coluna
Título: as Tabelas e Colunas nomeadas como NEXT vão resultar em erro no Banco de Dados SQL do Azure.
Categoria: problema
Descrição
Foram detectadas tabelas ou colunas denominadas NEXT. As sequências, introduzidas no Microsoft SQL Server, usam a função NEXT VALUE FOR do padrão ANSI. Se uma tabela ou coluna for nomeada NEXT, e a coluna tiver um alias VALUE, e se o padrão ANSI AS for omitido, a instrução resultante poderá causar um erro.
Recomendação
Reescreva instruções para incluir a palavra-chave AS do padrão ANSI no alias de uma tabela ou coluna. Por exemplo, quando uma coluna for nomeada como NEXT e tiver o alias VALUE, a consulta SELECT NEXT VALUE FROM TABLE
causará um erro e deverá ser reescrita como SELECT NEXT AS VALUE FROM TABLE. Da mesma forma, quando uma tabela for nomeada como NEXT e tiver o alias VALUE, a consulta SELECT Col1 FROM NEXT VALUE
vai causar um erro e deverá ser reescrita como SELECT Col1 FROM NEXT AS VALUE
.
RAISERROR
Título: as chamadas RAISERROR com estilo herdado devem ser substituídas por equivalentes modernos.
Categoria: aviso
Descrição
O estilo das chamadas RAISERROR como no exemplo abaixo é denominado como herdado porque elas não incluem as vírgulas e os parênteses. RAISERROR 50001 'this is a test'
. Não há mais suporte para esse método de chamar RAISERROR e ele foi removido no Banco de Dados SQL do Azure.
Recomendação
Reescreva a instrução usando a sintaxe atual da RAISERROR ou avalie se a abordagem moderna de BEGIN TRY { } END TRY BEGIN CATCH { THROW; } END CATCH
é viável.
Para obter mais informações, confira Funcionalidade Descontinuada do Mecanismo de Banco de Dados no SQL Server.
Auditorias de servidor
Título: usar os recursos de auditoria do Banco de Dados SQL do Azure para substituir Auditorias de Servidor
Categoria: aviso
Descrição
Não há suporte para auditorias de servidor no Banco de Dados SQL do Azure.
Recomendação
Considere os recursos de auditoria do Banco de Dados SQL do Azure para substituir Auditorias de Servidor. O SQL do Azure dá suporte à auditoria e os recursos são mais ricos do que do SQL Server. O Banco de Dados SQL do Azure pode auditar várias ações e eventos de banco de dados, incluindo: acesso a dados, alterações de esquema (DDL), alterações de dados (DML), contas, funções e permissões (DCL) e exceções de segurança. A Auditoria do Banco de Dados SQL do Azure aumenta a capacidade de obter insights profundos sobre eventos e as alterações que ocorrem no banco de dados, incluindo atualizações e consultas nos dados. Como alternativa, migre para a Instância Gerenciada de SQL do Azure ou para o SQL Server em Máquinas Virtuais do Azure.
Para obter mais informações, confira Auditoria do Banco de Dados SQL do Azure e Azure Synapse Analytics.
Credenciais do servidor
Título: não há suporte para credenciais no escopo do servidor no Banco de Dados SQL do Azure
Categoria: aviso
Descrição
Uma credencial é um registro que contém as informações de autenticação (credenciais) necessárias para conectar-se a um recurso fora do SQL Server. O Banco de Dados SQL do Azure dá suporte a credenciais de banco de dados, mas não às criadas no escopo de SQL Server.
Recomendação
O Banco de Dados SQL do Azure dá suporte a credenciais com escopo do banco de dados. Converta as credenciais com escopo do servidor em credenciais com escopo do banco de dados. Como alternativa, migre para a Instância Gerenciada de SQL do Azure ou para o SQL Server em Máquinas Virtuais do Azure.
Para saber mais, confira CRIAR UMA CREDENCIAL NO ESCOPO DO BANCO DE DADOS
Agente de Serviço
Título: não há suporte para o recurso Service Broker no Banco de Dados SQL do Azure
Categoria: problema
Descrição
O SQL Server Service Broker dá suporte nativo a aplicativos de mensagens e de enfileiramento no Mecanismo de Banco de Dados do SQL Server. Não há suporte para o recurso Service Broker no Banco de Dados SQL do Azure.
Recomendação
Não há suporte para o recurso Service Broker no Banco de Dados SQL do Azure. Considere migrar para a Instância Gerenciada de SQL do Azure que dá suporte ao Service Broker na mesma instância. Como alternativa, migre para o SQL Server em VMs do Azure.
Gatilhos com escopo do servidor
Título: não há suporte para gatilho no escopo do servidor no Banco de Dados SQL do Azure
Categoria: aviso
Descrição
Um gatilho é um tipo especial de procedimento armazenado que é executado em resposta a uma determinada ação em uma tabela, como inserção, exclusão ou atualização de dados. Não há suporte para gatilhos no escopo do servidor no Banco de Dados SQL do Azure. O Banco de Dados SQL do Azure não oferece suporte às seguintes opções para gatilhos: FOR LOGON, ENCRYPTION, WITH APPEND, NOT FOR REPLICATION, opção EXTERNAL NAME (não há suporte de método externo), opção ALL SERVER (Gatilho DDL), Gatilho em evento de LOGON (Gatilho de Logon), o Banco de Dados SQL do Azure não dá suporte a gatilhos CLR.
Recomendação
Use gatilhos de nível de banco de dados. Como alternativa, migre para a Instância Gerenciada de SQL do Azure ou para o SQL Server em Máquinas Virtuais do Azure.
Para obter mais informações, confira Resolvendo diferenças de Transact-SQL durante a migração para o Banco de Dados SQL.
Trabalhos do SQL Agent
Título: os trabalhos do SQL Server Agent não estão disponíveis no Banco de Dados SQL do Azure
Categoria: aviso
Descrição
O SQL Server Agent é um serviço Microsoft Windows que executa tarefas administrativas agendadas, que são chamadas de trabalhos no SQL Server. Os trabalhos do SQL Server Agent não estão disponíveis no Banco de Dados SQL do Azure.
Recomendação
Use trabalhos elásticos, que são os substitutos para trabalhos de SQL Server Agent no Banco de Dados SQL do Azure. Os trabalhos elásticos para o Banco de Dados SQL do Azure permitem que você execute, de modo confiável, scripts T-SQL que abrangem vários bancos de dados enquanto repete tentativas e fornece eventuais garantias de conclusão automaticamente. Como alternativa, migre para a Instância Gerenciada de SQL do Azure ou para o SQL Server nas Máquinas Virtuais do Azure. Para obter mais informações, consulte Trabalhos elásticos no Banco de Dados SQL do Azure.
Tamanho do Banco de Dados SQL
Título: o Banco de Dados SQL do Azure não dá suporte a bancos de dados com mais de 100 TB.
Categoria: problema
Descrição
O tamanho do banco de dados é maior do que o máximo compatível de 100 TB.
Recomendação
Avalie se os dados podem ser arquivados, compactados ou fragmentados em vários bancos de dados. Como alternativa, migre para o SQL Server em VMs do Azure.
Para saber mais, consulte limites do recurso vCore.
SQL Mail
Título: o SQL Mail foi descontinuado.
Categoria: aviso
Descrição
O SQL mail foi descontinuado e removido no Banco de Dados SQL do Azure.
Recomendação
Considere migrar para a Instância Gerenciada de SQL do Azure ou para o SQL Server em Máquinas Virtuais do Azure e usar o Database Mail.
Para obter mais informações, confira Funcionalidades descontinuadas do mecanismo de banco de dados no SQL Server
SystemProcedures110
Título: instruções detectadas que referenciam procedimentos armazenados do sistema removidos que não estão disponíveis no Banco de Dados SQL do Azure.
Categoria: aviso
Descrição
Os sistemas sem suporte e procedimentos armazenados estendidos a seguir não podem ser usados no Banco de Dados SQL do Azure – sp_dboption
, sp_addserver
, sp_dropalias
, sp_activedirectory_obj
, sp_activedirectory_scp
e sp_activedirectory_start
.
Recomendação
Remova as referências a procedimentos de sistema sem suporte que foram removidos no Banco de Dados SQL do Azure.
Para obter mais informações, confira Funcionalidades descontinuadas do mecanismo de banco de dados no SQL Server
Sinalizadores de rastreamento
Título: o Banco de Dados SQL do Azure não dá suporte a sinalizadores de rastreamento
Categoria: aviso
Descrição
Os sinalizadores de rastreamento são usados para definir temporariamente características de servidor específicas ou para desativar um determinado comportamento. Os sinalizadores de rastreamento são usados com frequência para diagnosticar problemas de desempenho ou depurar procedimentos armazenados ou sistemas de computador complexos. O Banco de Dados SQL do Azure não dá suporte a sinalizadores de rastreamento.
Recomendação
Examine a seção de objetos afetados nas Migrações para Azure para ver todos os sinalizadores de rastreamento que não são compatíveis com o Banco de Dados SQL do Azure e avalie se eles podem ser removidos. Como alternativa, migre para a Instância Gerenciada de SQL do Azure, que dá suporte a um número limitado de sinalizadores de rastreamento globais ou para o SQL Server em Máquinas Virtuais do Azure.
Para obter mais informações, confira Resolvendo diferenças de Transact-SQL durante a migração para o Banco de Dados SQL.
Autenticação do Windows
Título: não há suporte para usuários de banco de dados mapeados com a autenticação do Windows (segurança integrada) no Banco de Dados SQL do Azure.
Categoria: aviso
Descrição
O Banco de Dados SQL do Azure dá suporte a dois tipos de autenticação:
- Autenticação do SQL: usa um nome de usuário e uma senha
- A autenticação do Microsoft Entra usa identidades gerenciadas pelo Microsoft Entra ID (antigo Azure Active Directory) e tem suporte para domínios gerenciados e integrados.
Não há suporte para usuários de banco de dados mapeados com a autenticação do Windows (segurança integrada) no Banco de Dados SQL do Azure.
Recomendação
Faça a federação do Active Directory local com o Microsoft Entra ID. Em seguida, a identidade do Windows poderá ser substituída pelas identidades equivalentes do Microsoft Entra. Como alternativa, migre para o SQL Server em VMs do Azure.
Para obter mais informações, confira Recursos de segurança do Banco de Dados SQL do Azure.
xp_cmdshell
Título: não há suporte para xp_cmdshell no Banco de Dados SQL do Azure.
Categoria: problema
Descrição
Não há suporte para o xp_cmdshell
, que gera um shell de comando do Windows e passa uma cadeia de caracteres para execução no Banco de Dados SQL do Azure.
Recomendação
Revise a seção de objetos afetados no Migrações para Azure para ver todos os objetos que usam xp_cmdshell
e avalie se é possível remover a referência a xp_cmdshell
ou o objeto afetado. Considere também explorar a Automação do Azure que fornece automação baseada em nuvem e serviço de configuração. Como alternativa, migre para o SQL Server em VMs do Azure.
Conteúdo relacionado
- Guia de migração: SQL Server para o Banco de Dados SQL do Azure
- Serviços e ferramentas disponíveis para cenários de migração de dados
- O que é o Banco de Dados SQL do Azure?
- Calculadora de Custo Total de Propriedade do Azure
- Cloud Adoption Framework para Azure
- Práticas recomendadas para estimar os custos e dimensionar as cargas de trabalho migradas para o Azure
- Kit de ferramentas de migração de acesso a dados (Visualização)
- Visão geral do Assistente para Experimentos de Banco de Dados