Diferenças do T-SQL entre o SQL Server e o Banco de Dados SQL do Azure

Ao migrar seu banco de dados do SQL Server para o Banco de Dados SQL do Azure, você pode descobrir que seus bancos de dados do SQL Server exigem alguma reengenharia antes de poderem ser migrados. Este artigo fornece orientação para ajudá-lo a executar essa reengenharia e entender os motivos subjacentes pelos quais a reengenharia é necessária. Para detetar incompatibilidades e migrar bancos de dados para o Banco de Dados SQL do Azure, use o Assistente de Migração de Dados (DMA).

Nota

Microsoft Entra ID é o novo nome para o Azure Ative Directory (Azure AD). Estamos atualizando a documentação neste momento.

Descrição geral

A maioria dos recursos T-SQL que os aplicativos usam são totalmente suportados no Microsoft SQL Server e no Banco de Dados SQL do Azure. Por exemplo, os principais componentes SQL, como tipos de dados, operadores, string, aritmética, lógica e funções de cursor funcionam de forma idêntica no SQL Server e no Banco de dados SQL. Há, no entanto, algumas diferenças T-SQL em elementos DDL (linguagem de definição de dados) e DML (linguagem de manipulação de dados), resultando em instruções T-SQL e consultas que são apenas parcialmente suportadas (que discutiremos mais adiante neste artigo).

Além disso, há alguns recursos e sintaxe que não são suportados porque o Banco de Dados SQL do Azure foi projetado para isolar recursos de dependências nos bancos de dados do sistema e no sistema operacional. Como tal, a maioria dos recursos de nível de instância não tem suporte no Banco de dados SQL. As instruções e opções T-SQL não estarão disponíveis se configurarem opções no nível da instância, componentes do sistema operacional ou especificarem a configuração do sistema de arquivos. Quando esses recursos são necessários, uma alternativa apropriada geralmente está disponível de alguma outra forma no Banco de Dados SQL ou em outro recurso ou serviço do Azure.

Por exemplo, a alta disponibilidade é incorporada no Banco de Dados SQL do Azure. As instruções T-SQL relacionadas a grupos de disponibilidade não são suportadas pelo Banco de Dados SQL e as exibições de gerenciamento dinâmico relacionadas aos Grupos de Disponibilidade Always On também não são suportadas.

Para obter uma lista dos recursos com e sem suporte do Banco de Dados SQL, consulte Comparação de recursos do Banco de Dados SQL do Azure. Esta página complementa esse artigo e se concentra em instruções T-SQL.

Instruções de sintaxe T-SQL com diferenças parciais

As principais instruções DDL estão disponíveis, mas as extensões de instrução DDL relacionadas a recursos sem suporte, como o posicionamento de arquivos no disco, não são suportadas.

  • No SQL Server, CREATE DATABASE e ALTER DATABASE as instruções têm mais de três dúzias de opções. As instruções incluem posicionamento de arquivo, FILESTREAM e opções do agente de serviços que se aplicam apenas ao SQL Server. Isso pode não importar se você criar bancos de dados no Banco de Dados SQL antes de migrar, mas se estiver migrando o código T-SQL que cria bancos de dados, você deve comparar CREATE DATABASE (Banco de Dados SQL do Azure) com a sintaxe do SQL Server em CREATE DATABASE (SQL Server T-SQL) para garantir que todas as opções usadas sejam suportadas. CREATE DATABASE para o Banco de Dados SQL do Azure também tem opções de objetivo de serviço e pool elástico que se aplicam somente ao Banco de Dados SQL.
  • As CREATE TABLE instruções e têm FILETABLE e FILESTREAMALTER TABLE opções que não podem ser usadas no Banco de dados SQL porque esses recursos não são suportados.
  • CREATE LOGIN e ALTER LOGIN instruções são suportadas, mas não oferecem todas as opções disponíveis no SQL Server. Para tornar seu banco de dados mais portátil, o Banco de dados SQL incentiva o uso de usuários de banco de dados contidos em vez de logons sempre que possível. Para obter mais informações, consulte CREATE LOGIN e ALTER LOGIN e Manage logins and users.

Sintaxe T-SQL sem suporte no Banco de Dados SQL do Azure

Além das instruções T-SQL relacionadas aos recursos sem suporte descritos na comparação de recursos do Banco de Dados SQL do Azure, as instruções e grupos de instruções a seguir não são suportados. Como tal, se o banco de dados a ser migrado estiver usando qualquer um dos seguintes recursos, reprojete seu aplicativo para eliminar esses recursos e instruções T-SQL.

  • Agrupamento de objetos do sistema.
  • Relacionado à conexão: instruções de ponto de extremidade. A Base de Dados SQL não suporta a autenticação do Windows, mas suporta a autenticação do Microsoft Entra. Isso inclui a autenticação de entidades do Ative Directory federadas com o Microsoft Entra ID (anteriormente Azure Ative Directory). Para obter mais informações, consulte Conectando-se ao Banco de Dados SQL ou ao Azure Azure Synapse Analytics usando a autenticação do Microsoft Entra.
  • Consultas entre bancos de dados e instâncias cruzadas usando três ou quatro nomes de partes. Há suporte para três nomes de partes que fazem referência ao banco de dados e ao tempdb banco de dados atual. A consulta elástica oferece suporte a referências somente leitura a tabelas em outros bancos de dados MSSQL.
  • Encadeamento de propriedade entre bancos de dados e a TRUSTWORTHY propriedade do banco de dados.
  • EXECUTE AS LOGIN. Utilize EXECUTE AS USER em substituição.
  • Gerenciamento extensível de chaves (EKM) para chaves de criptografia. As chaves gerenciadas pelo cliente da Criptografia de Dados Transparente (TDE) e as chaves mestras da coluna Sempre Criptografada podem ser armazenadas no Cofre de Chaves do Azure.
  • Eventing: notificações de eventos, notificações de consulta.
  • Propriedades do arquivo: sintaxe relacionada ao nome, posicionamento, tamanho e outras propriedades do arquivo do banco de dados gerenciadas automaticamente pelo Banco de dados SQL.
  • Alta disponibilidade: Sintaxe relacionada à alta disponibilidade e recuperação de banco de dados, que são gerenciadas pelo Banco de dados SQL. Isso inclui sintaxe para backup, restauração, Always On, espelhamento de banco de dados, envio de logs, modelos de recuperação.
  • Sintaxe relacionada à replicação de instantâneo, transacional e mesclagem, que não está disponível no Banco de dados SQL. Há suporte para assinaturas de replicação.
  • Funções: fn_get_sql, , fn_virtualfilestatsfn_virtualservernodes.
  • Configuração da instância: Sintaxe relacionada à memória do servidor, threads de trabalho, afinidade de CPU, sinalizadores de rastreamento. Em vez disso, use camadas de serviço e tamanhos de computação.
  • KILL STATS JOB.
  • OPENQUERY, OPENDATASOURCEe nomes em quatro partes.
  • .NET Framework: integração CLR
  • Pesquisa semântica
  • Credenciais do servidor: use credenciais com escopo de banco de dados.
  • Não há suporte para permissões no nível do servidor: GRANT, REVOKEe DENY permissões no nível do servidor. Algumas permissões no nível do servidor são substituídas por permissões no nível do banco de dados ou concedidas implicitamente por funções de servidor internas. Alguns DMVs no nível do servidor e exibições de catálogo têm exibições semelhantes no nível do banco de dados.
  • SET REMOTE_PROC_TRANSACTIONS
  • SHUTDOWN
  • sp_addmessage
  • sp_configure e RECONFIGURE. ALTER DATABASE SCOPED CONFIGURATION é suportado.
  • sp_helpuser
  • sp_migrate_user_to_contained
  • SQL Server Agent: sintaxe que depende do SQL Server Agent ou do msdb banco de dados: alertas, operadores, servidores de gerenciamento central. Em vez disso, use scripts, como o PowerShell.
  • Auditoria do SQL Server: use a auditoria do Banco de dados SQL.
  • Rastreamento do SQL Server.
  • Sinalizadores de rastreio.
  • Depuração T-SQL.
  • Gatilhos de logon ou com escopo de servidor.
  • USE instrução: Para alterar o contexto do banco de dados para um banco de dados diferente, você deve criar uma nova conexão com esse banco de dados.

Referência completa do T-SQL

Para obter mais informações sobre gramática, uso e exemplos do T-SQL, consulte Referência do T-SQL (Mecanismo de Banco de Dados).

Sobre as etiquetas "Aplica-se a"

A referência T-SQL inclui artigos relacionados a todas as versões recentes do SQL Server. Abaixo do título do artigo, há uma barra de ícones, listando plataformas MSSQL e indicando aplicabilidade. Por exemplo, os grupos de disponibilidade foram introduzidos no SQL Server 2012. O artigo CREATE AVAILABILITY GROUP indica que a instrução se aplica ao SQL Server (a partir de 2012). A instrução não se aplica ao SQL Server 2008, SQL Server 2008 R2, Banco de Dados SQL do Azure, Azure Azure Synapse Analytics ou Parallel Data Warehouse.

Em alguns casos, o assunto geral de um artigo pode ser usado em um produto, mas há pequenas diferenças entre os produtos. As diferenças são indicadas em pontos médios do artigo, conforme apropriado. Por exemplo, o CREATE TRIGGER artigo está disponível no Banco de dados SQL. Mas a opção para gatilhos ALL SERVER no nível do servidor indica que os gatilhos no nível do servidor não podem ser usados no Banco de dados SQL. Em vez disso, use gatilhos no nível do banco de dados.

Próximos passos

Para obter uma lista dos recursos com e sem suporte do Banco de Dados SQL, consulte Comparação de recursos do Banco de Dados SQL do Azure.

Para detetar problemas de compatibilidade em seus bancos de dados do SQL Server antes de migrar para o Banco de Dados SQL do Azure e migrar seus bancos de dados, use o Assistente de Migração de Dados (DMA).