Diferenças de T-SQL entre o SQL Server e a Instância Gerenciada de SQL do Azure

Aplica-se a: Instância Gerenciada de SQL do Azure

Este artigo resume e explica as diferenças na sintaxe e no comportamento entre a Instância Gerenciada de SQL do Azure e o SQL Server.

A Instância Gerenciada de SQL fornece alta compatibilidade com o mecanismo de banco de dados do SQL Server, e a maioria dos recursos tem suporte em um Instância Gerenciada de SQL.

Diagrama mostrando a migração fácil do SQL Server.

Há algumas limitações de PaaS que são introduzidas na Instância Gerenciada de SQL e algumas alterações de comportamento em comparação com o SQL Server. As diferenças são divididas nas seguintes categorias:

A maioria desses recursos são restrições de arquitetura e representam recursos de serviço.

Os problemas temporários conhecidos que foram descobertos na Instância Gerenciada de SQL e que serão resolvidos no futuro estão descritos em Novidades.

Observação

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

Disponibilidade

Grupos de disponibilidade AlwaysOn

A alta disponibilidade é integrada à Instância Gerenciada de SQL e não pode ser controlada pelos usuários. As instruções a seguir não são compatíveis:

Backup

A Instância Gerenciada de SQL do Azure tem backups automáticos, de modo que os usuários podem criar backups COPY_ONLY do banco de dados completo. Não há suporte para backups de instantâneo de arquivo, log e diferencial.

  • Com uma Instância Gerenciada de SQL, você pode fazer backup de um banco de dados de instância somente em uma conta de Armazenamento de Blobs do Azure:
    • Apenas BACKUP TO URL tem suporte.
    • FILE, TAPE e dispositivos de backup não são compatíveis.
  • A maioria das opções gerais WITH são compatíveis.
    • COPY_ONLY é obrigatório.
    • FILE_SNAPSHOT e CREDENTIAL não são suportados.
    • Opções de fita: REWIND, NOREWIND, UNLOAD e NOUNLOAD não são compatíveis.
    • Opções específicas de log: NORECOVERY, STANDBY e NO_TRUNCATE não são compatíveis.

Limitações:

  • Com uma Instância Gerenciada de SQL, você pode fazer backup completo de um banco de dados de instância, com até 32 faixas, o que é suficiente para bancos de dados de até 4 TB caso a compactação de backup esteja em uso.

  • Não é possível executar BACKUP DATABASE ... WITH COPY_ONLY em um banco de dados que esteja criptografado com TDE (Transparent Data Encryption) gerenciado por serviços. O TDE gerenciado por serviço força os backups a serem criptografados com uma chave TDE interna. A chave não pode ser exportada, portanto, não é possível restaurar o backup. Use backups automáticos e uma restauração pontual ou use TDE (BYOK) gerenciado pelo cliente em vez disso. Você também pode desabilitar a criptografia no banco de dados.

  • Os backups nativos feitos em uma Instância Gerenciada de SQL podem ser restaurados somente em uma instância do SQL Server 2022. Isso ocorre porque a Instância Gerenciada de SQL tem uma versão de banco de dados interna mais recente em comparação com outras versões do SQL Server. Para obter mais informações, examine Restaurar um backup de banco de dados da Instância Gerenciada de SQL para o SQL Server 2022.

  • Para fazer backup ou restaurar um banco de dados de/para um armazenamento do Azure, você pode autenticar usando identidade gerenciada ou SAS (assinatura de acesso compartilhado), que é um URI que concede a você direitos de acesso restrito aos recursos de armazenamento do Azure Saiba mais sobre isso. Não há suporte para o uso de chaves de acesso nesses cenários.

  • O tamanho máximo da faixa de backup usando o comando BACKUP em uma Instância Gerenciada de SQL é 195 GB, que é o tamanho máximo do blob. Aumente o número de faixas no comando de backup para reduzir o tamanho da faixa individual e permaneça dentro desse limite.

    Dica

    Para solucionar essa limitação, ao fazer backup de um banco de dados de qualquer SQL Server em um ambiente local ou em uma máquina virtual, você pode:

    • Faça backup em DISK em vez de fazer backup em URL.
    • Carregar os arquivos no armazenamento de Blobs.
    • Restaure na Instância Gerenciada de SQL.

    O comando Restore em uma Instância Gerenciada de SQL dá suporte a tamanhos de blob maiores nos arquivos de backup porque um tipo de blob diferente é usado para o armazenamento dos arquivos de backup carregados.

Para obter informações sobre backups usando o T-SQL, consulte BACKUP.

Segurança

Auditoria

As principais diferenças entre a auditoria no SQL do Microsoft Azure e no SQL Server são:

  • Com a Instância Gerenciada de SQL, a auditoria funciona no nível do servidor. Os arquivos de log .xel são armazenados no armazenamento de Blob do Azure.
  • Com o Banco de Dados SQL do Azure, a auditoria funciona no nível do banco de dados. Os arquivos de log .xel são armazenados no armazenamento de Blob do Azure.
  • Com o SQL Server, máquinas locais ou virtuais, a auditoria funciona no nível do servidor. Os eventos são armazenados no sistema de arquivos ou nos logs de eventos do Windows.

A auditoria XEvent na Instância Gerenciada de SQL dá suporte a destinos de Armazenamento de Blobs do Azure. Logs de arquivo e do Windows não são compatíveis.

As principais diferenças na sintaxe CREATE AUDIT para a auditoria do armazenamento de Blobs do Azure são:

  • Uma nova sintaxe TO URL é fornecida para especificar a URL do contêiner de armazenamento de blobs do Azure onde arquivos .xel são colocados.
  • A sintaxe TO FILE não tem suporte porque uma Instância Gerenciada de SQL não pode acessar compartilhamentos de arquivo do Windows.

Para obter mais informações, consulte:

Certificados

A Instância Gerenciada de SQL não pode acessar compartilhamentos de arquivo nem pastas do Windows e, portanto, as seguintes restrições se aplicam:

  • O arquivo CREATE FROM/BACKUP TO não é compatível com certificados.
  • O certificado CREATE/BACKUP do FILE/ASSEMBLY não é compatível. Arquivos de chave privada não podem ser usados.

Consulte CRIAR CERTIFICADO e CERTIFICADO DE BACKUP.

Solução alternativa: Em vez de criar backup de certificado e restaurar o backup, obter o conteúdo binário do certificado e a chave privada, armazená-los como arquivo .sql e criar de binários:

CREATE CERTIFICATE
   FROM BINARY = asn_encoded_certificate
WITH PRIVATE KEY (<private_key_options>);

Credencial

Identidade gerenciada, o Azure Key Vault e identidades SHARED ACCESS SIGNATURE têm suporte. Não há suporte para usuários do Windows.

Consulte CRIAR CREDENCIAL e ALTERAR CREDENCIAL.

Provedores criptográficos

Uma Instância Gerenciada de SQL não pode acessar arquivos e, portanto, provedores de criptografia não podem ser criados:

Logons e usuários

  • Logons do SQL criados usando FROM CERTIFICATE, FROM ASYMMETRIC KEY e FROM SID são compatíveis. Consulte CREATE LOGIN. As entidades de segurança do servidor (logons) são criadas no nível do servidor e os usuários (entidades de segurança do banco de dados) são criados no nível do banco de dados. Há suporte para logons do Microsoft Entra criados com a sintaxe CREATE LOGIN e usuários do Microsoft Entra criados com a sintaxe CREATE USER FROM LOGIN. Ao criar um usuário e especificar FROM LOGIN, esse usuário é associado ao logon e herda as funções de servidor e as permissões atribuídas a ele.

    A Instância Gerenciada de SQL oferece suporte à criação de usuários de banco de dados independente com base em identidades do Microsoft Entra com a sintaxe CREATE USER [AADUser/AAD group] FROM EXTERNAL PROVIDER. Os usuários criados dessa maneira não são associados a entidades de segurança do servidor, mesmo que exista uma entidade de segurança do servidor com o mesmo nome no banco de dados master.

  • Logons do Windows criados com a sintaxe CREATE LOGIN ... FROM WINDOWS não têm suporte. Usar logons e usuários do Microsoft Entra.

  • O administrador do Microsoft Entra para a instância tem privilégios de administrador irrestritos.

  • Alguns recursos não oferecem suporte ao uso de logons do Microsoft Entra em interações entre instâncias, mas apenas em uma única Instância Gerenciada de SQL, como a replicação do SQL Server. O recurso de servidor vinculado, no entanto, dá suporte à autenticação entre instâncias usando entidades de segurança de servidor do Microsoft Entra (logons).

  • Não há suporte para a configuração de um logon do Microsoft Entra mapeado para um grupo do Microsoft Entra como proprietário do banco de dados. Um membro do grupo do Microsoft Entra pode ser um proprietário do banco de dados, mesmo que o logon não tenha sido criado no banco de dados.

  • Há suporte para a usurpação de identidade de entidades de segurança no nível do servidor do Microsoft Entra usando outras entidades de segurança do Microsoft Entra, como a cláusula EXECUTE AS. As limitações de executar como são:

    • EXECUTE AS USER não tem suporte para usuários do Microsoft Entra quando o nome é diferente do nome de logon. Por exemplo, quando o usuário for criado por meio da sintaxe CREATE USER [myAadUser] FROM LOGIN [john@contoso.com] e uma tentativa de representação for realizada por meio de EXEC AS USER = myAadUser. Ao criar um USER de um logon do Microsoft Entra, especifique o user_name como o mesmo login_name de LOGIN.

    • Somente logons no nível do SQL Server que fazem parte da função sysadmin podem executar as seguintes operações direcionadas a entidades de segurança do Microsoft Entra:

      • EXECUTE AS USER
      • EXECUTE AS LOGIN
    • Para a usurpar a identidade de um usuário com a instrução EXECUTE AS, o usuário precisará ser mapeado diretamente para o logon do Microsoft Entra. Os usuários que são membros de grupos do Microsoft Entra mapeados para entidades de segurança de servidor do Microsoft Entra não podem receber efetivamente uma usurpação de identidade com a instrução EXECUTE AS, mesmo que o chamador tenha as permissões de usurpação de identidade no nome de usuário especificado.

  • Há suporte à exportação e à importação do banco de dados usando arquivos BACPAC para os usuários do Microsoft Entra na Instância Gerenciada de SQL que usam o SSMS V18.4 ou posterior ou o SqlPackage.

    • As seguintes configurações são compatíveis usando um arquivo de banco de dados bacpac:
      • Exportar ou importar um banco de dados entre diferentes instâncias de gerenciamento dentro do mesmo domínio do Microsoft Entra.
      • Exportar um banco de dados da Instância Gerenciada de SQL e importar para o banco de dados SQL no mesmo domínio do Microsoft Entra.
      • Exportar um banco de dados do banco de dados SQL e importar para a Instância Gerenciada de SQL no mesmo domínio do Microsoft Entra.
      • Exportar um banco de dados da Instância Gerenciada de SQL e importe para o SQL Server (versão 2012 ou posterior).
        • Nessa configuração, todos os usuários do Microsoft Entra são criados como entidades de segurança do banco de dados do SQL Server (usuários) sem logons. O tipo de usuário é SQL e está visível como SQL_USER em sys.database_principals. Suas permissões e funções permanecem nos metadados do banco de dados do SQL Server e podem ser usadas para representação. No entanto, elas não podem ser usadas para acessar e entrar no SQL Server usando as credenciais.
  • Somente o logon da entidade de segurança no nível do servidor, que é criado pelo processo de provisionamento da Instância Gerenciada de SQL, membros das funções de servidor, como securityadmin ou sysadmin ou outros logons com permissão ALTER ANY LOGIN no nível do servidor podem criar entidades de segurança do servidor do Microsoft Entra (logons) no banco de dados master da Instância Gerenciada de SQL.

  • Os logons baseados em autenticação do SQL devem receber a função sysadmin para criar logons para identidades do Microsoft Entra.

  • O logon deve ser membro do mesmo locatário do Microsoft Entra no qual a Instância Gerenciada de SQL do Azure está hospedada.

  • Entidades de segurança do servidor do Microsoft Entra (logons) são visíveis no Pesquisador de Objetos a partir do SQL Server Management Studio 18.0 versão prévia 5.

  • Uma entidade de segurança do servidor com nível de acesso sysadmin é criada automaticamente para o administrador do Microsoft Entra após ser habilitada em uma instância.

  • Durante a autenticação, a sequência a seguir é aplicada para resolver a entidade de segurança de autenticação:

    1. Se a conta do Microsoft Entra for mapeada diretamente para um logon do Microsoft Entra, que está presente em sys.server_principals como tipo "E", conceda acesso e aplique permissões desse logon.
    2. Se a conta do Microsoft Entra for membro de um grupo mapeado para um logon do Microsoft Entra, que está presente em sys.server_principals como tipo "X", conceda acesso e aplique permissões desse logon.
    3. Se a conta do Microsoft Entra existir como mapeada diretamente para um usuário do Microsoft Entra em um banco de dados, presente em sys.database_principals como tipo "E", conceda acesso e aplique permissões do usuário do banco de dados do Microsoft Entra.
    4. Se a conta do Microsoft Entra for membro de um grupo do Microsoft Entra mapeado para um usuário do Microsoft Entra em um banco de dados, que está presente em sys.database_principals como tipo "X", conceda acesso e aplique permissões do usuário do grupo do Microsoft Entra.

Chave de serviço e chave mestra de serviço

Configuração

Extensão do pool de buffers

Collation

A ordenação de instância padrão é SQL_Latin1_General_CP1_CI_AS e pode ser especificada como um parâmetro de criação. Consulte Ordenações.

Níveis de compatibilidade

  • Os níveis de compatibilidade com suporte são: 100, 110, 120, 130, 140, 150 e 160.
  • Não há suporte para níveis de compatibilidade abaixo de 100.
  • O nível de compatibilidade padrão para novos bancos de dados é 150. Para bancos de dados restaurados, o nível de compatibilidade permanecerá inalterado se ele for 100 ou superior.

Consulte ALTERAR Nível de Compatibilidade do BANCO DE DADOS.

Espelhamento de banco de dados

Não há suporte para espelhamento de banco de dados.

  • As opções ALTER DATABASE SET PARTNER e SET WITNESS não são suportadas.
  • Não há suporte para CREATE ENDPOINT … FOR DATABASE_MIRRORING.

Para obter mais informações, consulte ALTER DATABASE SET PARTNER e SET WITNESS e CREATE ENDPOINT... FOR DATABASE_MIRRORING.

Opções de banco de dados

  • Não há suporte para vários arquivos de log.
  • Não há suporte para objetos na memória na camada de serviço de Uso Geral.
  • Há um limite de 280 arquivos por instância de Uso Geral, o que implica um máximo de 280 arquivos por banco de dados. Os arquivos de log e de dados na camada de Uso Geral são contados para esse limite. A camada de Comercialmente Crítico é compatível com 32.767 arquivos por banco de dados.
  • O banco de dados não pode conter grupos de arquivos que contenham dados FILESTREAM . A restauração falhará se .bak contiver dados FILESTREAM.
  • Cada arquivo é colocado no Armazenamento de Blobs do Azure. A E/S e a taxa de transferência por arquivo dependem do tamanho de cada arquivo individual.

Instrução CREATE DATABASE

As seguintes limitações se aplicam a CREATE DATABASE:

  • Arquivos e grupos de arquivos não podem ser definidos.

  • Um grupo de arquivos e um arquivo com otimização de memória são adicionados automaticamente e são chamados de XTP.

  • A opção CONTAINMENT não é compatível.

  • As opções WITH não são compatíveis.

    Dica

    Como alternativa, use ALTER DATABASE depois CREATE DATABASE para definir opções de banco de dados para adicionar arquivos ou para definir a contenção.

  • A opção FOR ATTACH não é compatível.

  • A opção AS SNAPSHOT OF não é compatível.

Para saber mais, confira CRIAR BANCO DE DADOS.

instrução ALTER DATABASE

Algumas propriedades de arquivo não podem ser definidas ou alteradas:

  • O caminho do arquivo não pode ser especificado na instrução T-SQL ALTER DATABASE ADD FILE (FILENAME='path'). Remova FILENAME do script porque uma Instância Gerenciada de SQL coloca os arquivos automaticamente.
  • O nome do arquivo não pode ser alterado usando a instrução ALTER DATABASE.
  • Não é permitido alterar o arquivo ou o grupo de arquivos XTP.

As opções a seguir são definidas por padrão e não podem ser alteradas:

  • MULTI_USER
  • ENABLE_BROKER
  • AUTO_CLOSE OFF

As seguintes opções não podem ser modificadas:

  • AUTO_CLOSE
  • AUTOMATIC_TUNING(CREATE_INDEX=ON|OFF)
  • AUTOMATIC_TUNING(DROP_INDEX=ON|OFF)
  • DISABLE_BROKER
  • EMERGENCY
  • ENABLE_BROKER
  • FILESTREAM
  • HADR
  • NEW_BROKER
  • OFFLINE
  • PAGE_VERIFY
  • PARTNER
  • READ_ONLY
  • RECOVERY BULK_LOGGED
  • RECOVERY_SIMPLE
  • REMOTE_DATA_ARCHIVE
  • RESTRICTED_USER
  • SINGLE_USER
  • WITNESS

Algumas instruções ALTER DATABASE (por exemplo, SET CONTAINMENT) podem falhar temporariamente, por exemplo, durante o backup automatizado do banco de dados ou logo após a criação de um banco de dados. Nesse caso, a instrução ALTER DATABASE deve ser repetida. Para obter mais informações sobre mensagens de erro relacionadas, confira a seção Comentários.

Para saber mais, confira ALTERAR BANCO DE DADOS.

SQL Server Agent

  • No momento, a habilitação e a desabilitação do SQL Server Agent não é compatível com a Instância Gerenciada de SQL. O SQL Agent sempre está em execução.
  • Não há suporte para o gatilho de agendamento de cargo com base em uma CPU ociosa.
  • As configurações do SQL Server Agent são somente leitura. O procedimento sp_set_agent_properties não tem suporte na Instância Gerenciada de SQL.
  • Trabalhos
    • As etapas de trabalho T-SQL têm suporte.
    • Os trabalhos de replicação a seguir têm suporte:
      • Leitor do log de transações
      • Instantâneo
      • Distribuidor
    • As etapas de trabalho SSIS são compatíveis.
    • Outros tipos de etapas de trabalho não são compatíveis no momento:
      • A etapa de trabalho de replicação de mesclagem não é compatível.
      • Não há suporte para leitor de fila.
      • O shell de comando ainda não é compatível.
    • A Instância Gerenciada de SQL não pode acessar recursos externos, por exemplo, compartilhamentos de rede por meio do Robocopy.
    • O SQL Server Analysis Services não tem suporte.
  • Há suporte parcial para notificações.
  • Notificações por email são compatíveis, embora seja necessário configurar um perfil de Database Mail. O SQL Server Agent pode usar apenas um perfil do Database Mail e ele deve ser chamado de AzureManagedInstance_dbmail_profile.
    • Não há suporte para o Pager.
    • Não há suporte para o NetSend.
    • Ainda não há suporte para alertas.
    • Não há suporte para proxies.
  • Não há suporte para o EventLog.
  • O usuário deve ser mapeado diretamente para o logon de servidor do Microsoft Entra a fim de criar, modificar ou executar cargos do SQL Agent. Os usuários que não são mapeados diretamente, por exemplo, usuários que pertencem a um grupo do Microsoft Entra que tenha os direitos de criar, modificar ou executar cargos do SQL Agent, não poderão executar essas ações efetivamente. Isso ocorre devido à representação da Instância Gerenciada de SQL e às limitações de EXECUTE AS.
  • Não há suporte para o recurso de administração multisservidor para cargos mestre/de meta (MSX/TSX).

Para obter informações sobre o SQL Server Agent, consulte SQL Server Agent.

Tabelas

Não há suporte para os seguintes tipos de tabela:

Para obter informações sobre a criação e alteração de tabelas, consulte CRIAR TABELA e ALTERAR TABELA.

Funcionalidades

BULK INSERT/OPENROWSET

Uma Instância Gerenciada de SQL não pode acessar compartilhamentos de arquivo e pastas do Windows. Portanto, os arquivos precisam ser importados do Armazenamento de Blobs do Azure:

  • DATASOURCE é necessário no comando BULK INSERT durante a importação de arquivos do armazenamento de blobs do Azure. Consulte INSERÇÃO EM MASSA.
  • DATASOURCE é necessário na função OPENROWSET quando você ler um conteúdo de um arquivo do armazenamento de blobs do Azure. Consulte OPENROWSET.
  • OPENROWSET pode ser usado para ler dados do Banco de Dados SQL do Azure, da Instância Gerenciada de SQL do Azure ou de instâncias do SQL Server. Não há suporte para outras fontes, como bancos de dados Oracle ou arquivos do Excel.

CLR

A Instância Gerenciada de SQL não pode acessar compartilhamentos de arquivo nem pastas do Windows. Portanto, as seguintes restrições se aplicam:

Database Mail (db_mail)

  • sp_send_dbmail não pode enviar anexos usando o parâmetro @file_attachments. O sistema de arquivos local e os compartilhamentos externos ou o armazenamento de Blobs do Azure não são acessíveis nesse procedimento.
  • Consulte os problemas conhecidos relacionados ao parâmetro @query e à autenticação.

DBCC

Não há suporte para instruções DBCC não documentadas que estão habilitadas no SQL Server em Instâncias Gerenciadas de SQL.

  • Há suporte apenas para um número limitado de sinalizadores de rastreamento globais. Não há suporte para Trace flags em nível de sessão. Consulte Sinalizadores de rastreamento.
  • DBCC TRACEOFF e DBCC TRACEON funcionam com o número limitado de sinalizadores de rastreamento global.
  • DBCC CHECKDB com opções REPAIR_ALLOW_DATA_LOSS, REPAIR_FAST e REPAIR_REBUILD não pode ser usado porque o banco de dados não pode ser definido no modo SINGLE_USER. Confira Diferenças do ALTER DATABASE. Possíveis bancos de dados corrompidos são tratados pela equipe de suporte do Azure. Entre em contato com o Suporte do Azure se houver qualquer indicação de banco de dados corrompido.

Transações distribuídas

As transações distribuídas baseadas em T-SQL e .NET entre instâncias gerenciadas estão em disponibilidade geral. Há suporte para outros cenários, como transações XA, transações distribuídas entre instâncias gerenciadas e outros participantes, entre outros, no DTC para a Instância Gerenciada de SQL do Azure, que está disponível em versão prévia pública.

Eventos estendidos

Não há suporte para alguns destinos específicos do Windows para XEvents:

  • Não há suporte para o destino etw_classic_sync. Armazenar arquivos .xel no armazenamento de blobs do Azure. Consulte etw_classic_sync target.
  • Não há suporte para o destino event_file. Armazenar arquivos .xel no armazenamento de blobs do Azure. Consulte event_file target.

Bibliotecas externas

As bibliotecas externas do banco de dados R e Python têm suporte em visualização pública limitada. Confira Serviços de Machine Learning na Instância Gerenciada de SQL do Azure (versão prévia).

FILESTREAM e FileTable

  • Não há suporte para dados FILESTREAM.
  • O banco de dados não pode conter grupos de arquivos com dados FILESTREAM.
  • Não há suporte para FILETABLE.
  • As tabelas não podem ter tipos FILESTREAM.
  • Não há suporte para as seguintes funções:
    • GetPathLocator()
    • GET_FILESTREAM_TRANSACTION_CONTEXT()
    • PathName()
    • GetFileNamespacePat)
    • FileTableRootPath()

Para obter mais informações, consulte FILESTREAM e FileTables.

Não há suporte para Pesquisa semântica.

Servidores vinculados

Servidores vinculados na Instância Gerenciada de SQL dão suporte a um número limitado de destinos:

  • Os destinos com suporte são Instância Gerenciada de SQL, Banco de Dados SQL, pools dedicados e sem servidor do SQL do Azure Synapse e instâncias do SQL Server.
  • Destinos sem suporte: arquivos, Analysis Services e outros RDBMS. Tente usar a importação de CSV nativo do Armazenamento de Blobs do Azure usando BULK INSERT ou OPENROWSET como uma alternativa para importação de arquivo ou carregar arquivos usando um pool de SQL sem servidor no Azure Synapse Analytics.

Operações:

Os servidores vinculados na Instância Gerenciada de SQL do Azure dão suporte à autenticação SQL e à autenticação do Microsoft Entra.

PolyBase

A virtualização de dados com a Instância Gerenciada de SQL do Azure permite executar consultas T-SQL (Transact-SQL) em dados de arquivos armazenados no Azure Data Lake Storage Gen2 ou no Armazenamento de Blobs do Azure e combiná-los com dados relacionais armazenados localmente por meio de junções. Os formatos de arquivo parquet e de texto delimitado (CSV) têm suporte direto. O formato de arquivo JSON tem suporte indiretamente especificando o formato de arquivo CSV em que as consultas retornam todos os documentos como uma linha separada. É possível analisar as linhas ainda mais usando o JSON_VALUE e OPENJSON. Para obter informações gerais sobre o PolyBase, consulte PolyBase.

Além disso, CETAS (CREATE EXTERNAL TABLE AS SELECT) permite exportar dados de sua instância gerenciada de SQL para uma conta de armazenamento externa. Você pode usar o CETAS para criar uma tabela externa sobre arquivos Parquet ou CSV Armazenamento de Blobs do Azure ou ADLS (Azure Data Lake Storage) Gen2. O CETAS também pode exportar, em paralelo, os resultados de uma instrução T-SQL SELECT para a tabela externa criada.

Replicação

  • Há suporte para os tipos de replicação de instantâneo e bidirecional. Não há suporte para replicação de mesclagem, replicação ponto a ponto e assinaturas atualizáveis.
  • A replicação transacional está disponível na Instância Gerenciada de SQL com algumas restrições:
    • Todos os tipos de participantes de replicação (editor, distribuidor, assinante de pull e assinante de push) podem ser colocados na Instância Gerenciada de SQL, mas o publicador e o distribuidor devem estar tanto na nuvem quanto no local.
    • A Instância Gerenciada de SQL pode se comunicar com as versões recentes do SQL Server. Para obter mais informações, confira a matriz de versões com suporte.
    • A replicação transacional tem alguns requisitos de rede adicionais.

Para obter mais informações sobre como configurar a replicação transacional, consulte os seguintes tutoriais:

Instrução RESTAURAR

  • Sintaxe suportada:
    • RESTORE DATABASE
    • RESTORE FILELISTONLY
    • RESTORE HEADERONLY
    • RESTORE LABELONLY
    • RESTORE VERIFYONLY
  • Sintaxe não suportada:
    • RESTORE LOGONLY
    • RESTORE REWINDONLY
  • Origem:
    • FROM URL (Armazenamento de Blobs do Azure) é a única opção compatível.
    • Não há suporte para FROM DISK/TAPE/dispositivo de backup.
    • Conjuntos de backup não são compatíveis.
  • As opções WITH não são compatíveis. As tentativas de restauração, incluindo WITH como DIFFERENTIAL, STATS, REPLACE e assim por diante, falharão.

Uma operação de restauração de banco de dados é assíncrona e repetível na Instância Gerenciada de SQL do Azure. Talvez você receba um erro no SSMS em caso de falha na conexão ou se o tempo limite for atingido. A Instância Gerenciada de SQL do Azure continua tentando restaurar o banco de dados em segundo plano, e você pode acompanhar o progresso do processo da restauração usando as exibições de gerenciamento dinâmico sys.dm_exec_requests e sys.dm_operation_status.

As seguintes opções de banco de dados são definidas/substituídas e não podem ser alteradas posteriormente:

  • NEW_BROKER se o agente não estiver habilitado no arquivo .bak.
  • ENABLE_BROKER se o agente não estiver habilitado no arquivo .bak.
  • AUTO_CLOSE=OFF se um banco de dados no arquivo .bak tiver AUTO_CLOSE=ON.
  • RECOVERY FULL se um banco de dados no arquivo .bak tiver modelo de recuperação SIMPLE ou BULK_LOGGED.
  • O grupo de arquivos otimizados por memória é adicionado e chamado de XTP caso não estivesse no arquivo .bak de origem.
  • Qualquer grupo de arquivos otimizado para memória existente é renomeado para XTP.
  • As opções SINGLE_USER e RESTRICTED_USER são convertidas em MULTI_USER.

Limitações:

  • Os backups dos bancos de dados corrompidos podem ser restaurados dependendo do tipo de corrupção, mas os backups automatizados não serão feitos até que a corrupção seja corrigida. Execute DBCC CHECKDB na Instância Gerenciada de SQL de origem e use o backup WITH CHECKSUM para evitar esse problema.
  • A restauração do arquivo .BAK de um banco de dados que contenha qualquer limitação descrita neste documento (por exemplo, objetos FILESTREAM ou FILETABLE) não pode ser realizada na Instância Gerenciada de SQL.
  • Os arquivos .BAK contendo vários conjuntos de backup não podem ser restaurados.
  • Os arquivos .BAK contendo vários arquivos de log não podem ser restaurados.
  • Os backups que contêm bancos de dados maiores que 8 TB, objetos OLTP na memória ativas ou o número de arquivos que excedem 280 arquivos por instância não podem ser restaurados em uma instância de Uso Geral.
  • Os backups que contenham bancos de dados maiores que 4 TB ou objetos OLTP in-memory com o tamanho total maior do que o tamanho descrito em limites de recursos não podem ser restaurados na instância Comercialmente Crítico. Para obter informações sobre instruções de restauração, consulte instruções RESTAURAR.

Importante

As mesmas limitações se aplicam à operação de restauração pontual interna. Por exemplo, banco de dados de Uso Geral maior que 4 TB não pode ser restaurado na instância Comercialmente Crítico. O banco de dados comercialmente crítico com arquivos OLTP na memória ou mais de 280 arquivos não podem ser restaurados na instância Uso Geral.

Service Broker

A troca de mensagens do Service Broker entre instâncias tem suporte apenas entre Instâncias Gerenciadas de SQL do Azure:

  • CREATE ROUTE: não é possível usar CREATE ROUTE com ADDRESS em vez de LOCAL ou um nome DNS de outra Instância Gerenciada de SQL. A porta é sempre 4022.
  • ALTER ROUTE: não é possível usar ALTER ROUTE com ADDRESS em vez de LOCAL ou um nome DNS de outra Instância Gerenciada de SQL. A porta é sempre 4022.

Há suporte para a segurança do transporte, mas não para a segurança da caixa de diálogo:

  • Não há suporte para CREATE REMOTE SERVICE BINDING.

O Service Broker está habilitado por padrão e não pode ser desabilitado. As seguintes opções de ALTER DATABASE não têm suporte:

  • ENABLE_BROKER
  • DISABLE_BROKER

Procedimentos, funções, gatilhos armazenados

  • NATIVE_COMPILATION não tem suporte na camada de Uso Geral.
  • Não há suporte para as seguintes opções sp_configure:
    • allow polybase export
    • allow updates
    • filestream_access_level
    • remote access
    • remote data archive
    • remote proc trans
    • scan for startup procs
  • As seguintes opções sp_configure são ignoradas e não têm nenhum efeito:
    • Ole Automation Procedures
  • sp_execute_external_scripts só tem suporte para Serviços de Machine Learning para a MI de SQL, caso contrário, sp_execute_external_scripts não tem suporte para a Instância Gerenciada de SQL. Consulte sp_execute_external_scripts.
  • Não há suporte para xp_cmdshell. Consulte xp_cmdshell.
  • Extended stored procedures não tem suporte, e isso inclui sp_addextendedproc e sp_dropextendedproc. Essa funcionalidade não terá suporte porque está em um caminho de substituição para o SQL Server. Para obter mais informações, confira Procedimentos armazenados estendidos.
  • Não há suporte para sp_attach_db, sp_attach_single_file_db e sp_detach_db. Consulte sp_attach_db, sp_attach_single_file_db e sp_detach_db.

Função do sistema e variáveis

As seguintes variáveis, funções e exibições retornam resultados diferentes:

  • SERVERPROPERTY('EngineEdition') retorna o valor 8. Essa propriedade identifica exclusivamente uma Instância Gerenciada de SQL. Consulte SERVERPROPERTY.
  • SERVERPROPERTY('InstanceName') retorna NULL, porque o conceito de instância existente para o SQL Server não se aplica a uma Instância Gerenciada de SQL. Consulte SERVERPROPERTY('InstanceName').
  • @@SERVERNAME retorna um nome DNS "conectável" completo, por exemplo, my-managed-instance.wcus17662feb9ce98.database.windows.net. Veja@@SERVERNAME.
  • SYS.SERVERS retorna o nome completo “conectável” do DNS, como myinstance.domain.database.windows.net, para propriedades “name” e “data_source”. Veja SYS.SERVERS.
  • @@SERVICENAME retorna NULL, porque o conceito de serviço existente para o SQL Server não se aplica a uma Instância Gerenciada de SQL. Veja @@SERVICENAME.
  • SUSER_ID é compatível. Retornará NULO se o logon do Microsoft Entra não estiver em sys.syslogins. Consulte SUSER_ID.
  • Não há suporte para SUSER_SID. Os dados errados são retornados, o que é um problema temporário conhecido. Consulte SUSER_SID.

Restrições de ambiente

Sub-rede

  • Você não pode inserir outros recursos (por exemplo, máquinas virtuais) na sub-rede em que implantou sua Instância Gerenciada de SQL. Implante esses recursos usando uma sub-rede diferente.
  • A sub-rede deve ter um número suficiente de endereços IPdisponíveis. O mínimo necessário é 32 endereços IP na sub-rede.
  • O número de vCores e tipos de instâncias que podem ser implantadas em uma região têm algumas restrições e limites.
  • Há uma configuração de rede que deve ser aplicada na sub-rede.

Rede virtual

  • A rede virtual pode ser implantada usando o modelo de recurso. O Modelo Clássico não dá suporte à implantação de rede virtual (VNet).
  • Depois que uma instância gerenciada de SQL é criada, não há suporte para mover a instância gerenciada de SQL ou a VNet para outro grupo de recursos ou assinatura.
  • Para instâncias gerenciadas de SQL hospedadas em clusters virtuais criados antes de 22 de setembro de 2020, não há suporte para o emparelhamento global de VNet. Você pode se conectar a esses recursos via ExpressRoute ou VNet a VNet por meio de gateways de VNet.

Grupos de failover

Os bancos de dados do sistema não são replicados para a instância secundária em um grupo de failover. Portanto, os cenários que dependem de objetos dos bancos de dados do sistema são impossíveis na instância secundária a menos que os objetos sejam criados manualmente nela.

tempdb

  • O tamanho máximo do arquivo do banco de dados do sistema tempdb não pode ser maior que 24 GB por núcleo em uma camada de Uso Geral. O tamanho máximo de tempdb em uma camada Comercialmente Crítico é limitado pelo tamanho do armazenamento da Instância Gerenciada de SQL. O tamanho do arquivo de log tempdb é limitado a 120 GB na camada uso geral. Algumas consultas podem retornar um erro se precisarem de mais de 24 GB por núcleo em tempdb ou se produzirem mais de 120 GB de dados de log.
  • tempdb sempre está divido em 12 arquivos de dados: um arquivo de dados primário, também chamado demaster, e 11 arquivos de dados não primários. A estrutura de arquivos não pode ser alterada, e não é possível adicionar novos arquivos a tempdb.
  • Memory-optimized TempDB metadata, não há suporte para um novo recurso do banco de dados em memória do SQL Server 2019.
  • Os objetos criados no banco de dados model não podem ser criados automaticamente em tempdb após uma reinicialização ou um failover porque tempdb não obtém sua lista inicial de objetos do banco de dados model. Você deve criar objetos em tempdb manualmente após cada reinicialização ou failover.

msdb

Os seguintes esquemas no banco de dados do sistema msdb na Instância Gerenciada de SQL precisam ser de propriedade das respectivas funções predefinidas:

Importante

Alterar os nomes da função predefinidos, os nomes de esquema e os proprietários de esquema por clientes afetará a operação normal do serviço. Todas as alterações feitas a elas serão revertidas para os valores predefinidos assim que forem detectadas ou na próxima atualização de serviço, na versão mais recente, para garantir a operação normal de serviço.

Logs de erros

Uma Instância Gerenciada de SQL coloca informações detalhadas em logs de erros. Há muitos eventos internos do sistema que são registrados no log de erros. Usar um procedimento personalizado para a leitura de logs de erros que filtra algumas entradas não relevantes. Para obter mais informações, confira Instância Gerenciada de SQL – sp_readmierrorlog ou Extensão da Instância Gerenciada de SQL (versão prévia) para Azure Data Studio.

Não há suporte para a alteração do número de logs de erros retidos.