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ê poderá descobrir que os seus bancos de dados SQL Server precisam de alguma reengenharia antes que possam ser migrados. Este artigo fornece diretrizes para ajudá-lo a realizar essa reengenharia quanto a entender os motivos subjacentes pelos quais a reengenharia é necessária. Para detectar incompatibilidades e migrar bancos de dados para Banco de Dados SQL do Azure, use o DMA (Assistente de Migração de Dados).

Observação

O Microsoft Entra ID era conhecido como Azure Active Directory (Azure AD).

Visão geral

Há suporte total, tanto no Microsoft SQL Server quanto no Banco de Dados SQL do Azure, para a maioria dos recursos do T-SQL que os aplicativos usam. Por exemplo, os componentes principais do SQL como tipos de dados, operadores, cadeia de caracteres, funções aritméticas, lógicas e de cursor funcionam da mesma maneira no SQL Server e no Banco de Dados SQL. No entanto, existem algumas diferenças do 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 têm suporte apenas parcial (que discutiremos posteriormente neste artigo).

Além disso, há alguns recursos e sintaxe sem suporte nenhum, porque o Banco de Dados SQL do Azure foi criado para isolar recursos de dependências nos bancos de dados do sistema e no sistema operacional. Dessa forma, a maioria dos recursos de nível de instância não tem suporte no Banco de Dados SQL. As opções e instruções T-SQL não estarão disponíveis se elas configurarem opções no nível da instância, componentes do sistema operacional ou se especificarem a configuração do sistema de arquivos. Quando essas funcionalidades são necessárias, uma alternativa apropriada costuma estar disponível de alguma forma no Banco de Dados SQL ou em outro recurso ou serviço do Azure.

Por exemplo, a alta disponibilidade é integrada no Banco de Dados SQL do Azure. Não há suporte para as instruções T-SQL relacionadas aos grupos de disponibilidade no Banco de Dados SQL nem para as exibições de gerenciamento dinâmico relacionadas ao Grupos de Disponibilidade AlwaysOn.

Para obter uma lista dos recursos com e sem suporte no 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 instruções DDL principais estão disponíveis, mas não há suporte para extensões de instrução DDL relacionadas a recursos sem suporte, como o posicionamento de arquivos em disco.

  • No SQL Server, as instruções CREATE DATABASE e ALTER DATABASE têm mais de três dúzias de opções. As instruções incluem o a localização de arquivos, FILESTREAM e opções do Service Broker que se aplicam somente ao SQL Server. Isso pode não fazer diferença 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ê deverá comparar CREATE DATABASE (Banco de Dados SQL do Azure) com a sintaxe do SQL Server em CREATE DATABASE (SQL Server T-SQL) para verificar se todas as opções que você usar têm suporte. CREATE DATABASE para o Banco de Dados SQL do Azure também tem as opções de objetivo de serviço e de pool elástico que se aplicam apenas ao Banco de Dados SQL.
  • As instruções CREATE TABLE e ALTER TABLE tem as opções FILETABLE e FILESTREAM que não podem ser usadas no Banco de Dados SQL, porque esses recursos não têm suporte.
  • As instruções CREATE LOGIN e ALTER LOGIN têm suporte, 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 estimula o uso de usuários de banco de dados independente em vez de logons, sempre que possível. Para saber mais, confira CREATE LOGIN, ALTER LOGIN e Gerenciar logons e usuários.

Sintaxe do 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, não há suporte para as instruções e grupos de instruções a seguir. Assim, se o banco de dados que será migrado está usando qualquer um dos recursos a seguir, faça a reengenharia do seu aplicativo para eliminar essas instruções e recursos do T-SQL.

  • Ordenação de objetos do sistema.
  • Relacionado à conexão: instruções de ponto de extremidade. O banco de dados SQL não dá suporte à autenticação do Windows, mas dá suporte à autenticação do Microsoft Entra. Isso inclui a autenticação de entidades de segurança do Active Directory federadas com o Microsoft Entra ID (antigo Azure Active Directory). Para obter mais informações, confira Conectar ao Banco de Dados SQL ou Azure Synapse Analytics usando a autenticação do Microsoft Entra.
  • Consultas entre bancos de dados e entre instâncias que usam três ou quatro nomes de partes. Há suporte para nomes de três partes que fazem referência ao banco de dados tempdb e ao banco de dados atual. A consulta elástica dá suporte a referências somente leitura a tabelas em outros bancos de dados MSSQL.
  • Encadeamento de propriedade entre bancos de dados e a propriedade de banco de dados TRUSTWORTHY.
  • EXECUTE AS LOGIN. Use EXECUTE AS USER em vez disso.
  • EKM (gerenciamento extensível de chaves) para chaves de criptografia. As chaves gerenciadas pelo cliente do TDE (Transparent Data Encryption) e as chaves mestras de coluna do Always Encrypted podem ser armazenadas no Azure Key Vault.
  • Criação de eventos: notificações de eventos, notificações de consulta.
  • Propriedades do arquivo: sintaxe relacionada ao nome do arquivo de banco de dados, posicionamento, tamanho e outras propriedades de arquivo 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 a sintaxe de backup, restauração, Always On, espelhamento de banco de dados, envio de logs e modelos de recuperação.
  • Sintaxe relacionada à replicação de instantâneo, transacional e de mesclagem, que não está disponível no Banco de Dados SQL. Há suporte para as assinaturas de replicação.
  • Funções: fn_get_sql, fn_virtualfilestats, fn_virtualservernodes.
  • Configuração de instância: sintaxe relacionada à memória do servidor, threads de trabalho, afinidade da CPU e sinalizadores de rastreamento. Use as camadas de serviço e os tamanhos da computação em vez disso.
  • KILL STATS JOB.
  • OPENQUERY, OPENDATASOURCE e nomes de quatro partes.
  • .NET Framework: integração CLR
  • Pesquisa semântica
  • Credenciais do Servidor: em vez disso, use credenciais no escopo do banco de dados.
  • Permissões do nível de servidor: as permissões de nível de servidor GRANT, REVOKE e DENY não têm suporte. 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 integradas. Algumas 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 tem suporte.
  • sp_helpuser
  • sp_migrate_user_to_contained
  • SQL Server Agent: sintaxe que se baseia no SQL Server Agent ou no banco de dados msdb: alertas, operadores, servidores de gerenciamento central. Em vez disso, use scripts, como o PowerShell.
  • Auditoria do SQL Server: em vez disso, use a auditoria do Banco de Dados SQL.
  • Rastreamento do SQL Server.
  • Sinalizadores de rastreamento.
  • Depuração de T-SQL.
  • Com escopo do servidor ou gatilhos de logon.
  • Instrução USE: para alterar o contexto do banco de dados para um banco de dados diferente, é necessário criar uma conexão com esse banco de dados.

Referência T-SQL completa

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

Sobre as marcas "Aplica-se a"

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

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

Próximas etapas

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

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