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.
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 disponibilidade, incluindo as diferenças nos Grupos de Disponibilidade AlwaysOn e em backups.
- Segurança inclui as diferenças em auditoria, certificados, credenciais, provedores de criptografia, logons e usuários e chave de serviço e chave mestra de serviço.
- Configuração inclui as diferenças em extensão do pool de buffers, ordenação, níveis de compatibilidade, espelhamento de banco de dados, opções de banco de dados, SQL Server Agent e opções de tabela.
- Funcionalidades incluem BULK INSERT/OPENROWSET, CLR, DBCC, transações distribuídas, eventos estendidos, bibliotecas externas, FILESTREAM e FileTable, pesquisa semântica de texto completo, servidores vinculados, PolyBase, replicação, RESTORE, Service Broker, procedimentos armazenados, funções e gatilhos.
- Configurações de ambiente como VNets e configurações de sub-rede.
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:
- CREATE ENDPOINT … FOR DATABASE_MIRRORING
- CRIAR GRUPO DE DISPONIBILIDADE
- ALTERAR GRUPO DE DISPONIBILIDADE
- DESCARTAR GRUPO DE DISPONIBILIDADE
- A cláusula SET HADR da instrução ALTERAR BANCO DE DADOS
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.
- Apenas
- A maioria das opções gerais
WITH
são compatíveis.COPY_ONLY
é obrigatório.FILE_SNAPSHOT
eCREDENTIAL
não são suportados.- Opções de fita:
REWIND
,NOREWIND
,UNLOAD
eNOUNLOAD
não são compatíveis. - Opções específicas de log:
NORECOVERY
,STANDBY
eNO_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 emURL
. - 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.- Faça backup em
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
doFILE
/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:
- Não há suporte para
CREATE CRYPTOGRAPHIC PROVIDER
. Consulte CRIAR PROVEDOR CRIPTOGRÁFICO. - Não há suporte para
ALTER CRYPTOGRAPHIC PROVIDER
. Consulte ALTERAR PROVEDOR CRIPTOGRÁFICO.
Logons e usuários
Logons do SQL criados usando
FROM CERTIFICATE
,FROM ASYMMETRIC KEY
eFROM 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 especificarFROM 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 dadosmaster
.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 deEXEC 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 comoSQL_USER
emsys.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.
- 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 é
- As seguintes configurações são compatíveis usando um arquivo de banco de dados bacpac:
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
ousysadmin
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 dadosmaster
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:
- 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. - 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. - 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. - 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.
- Se a conta do Microsoft Entra for mapeada diretamente para um logon do Microsoft Entra, que está presente em
Chave de serviço e chave mestra de serviço
- Backup da chave mestra não tem suporte (gerenciado pelo serviço de banco de dados SQL).
- A restauração da chave mestra não tem suporte (gerenciado pelo serviço de banco de dados SQL).
- O backup da chave mestra de serviço não é compatível (gerenciado pelo serviço de banco de dados SQL).
- A restauração da chave mestra de serviço não é compatível (gerenciado pelo serviço de banco de dados SQL).
Configuração
Extensão do pool de buffers
- A extensão de pool de buffers não é compatível.
- Não há suporte para
ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION
. Consulte ALTERAR CONFIGURAÇÃO DO SERVIDOR.
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
eSET 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 dadosFILESTREAM
. - 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
depoisCREATE 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')
. RemovaFILENAME
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:
- FILESTREAM
- FILETABLE
- EXTERNAL TABLE (exceto PolyBase)
- MEMORY_OPTIMIZED (sem suporte apenas na camada Uso Geral)
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 comandoBULK INSERT
durante a importação de arquivos do armazenamento de blobs do Azure. Consulte INSERÇÃO EM MASSA.DATASOURCE
é necessário na funçãoOPENROWSET
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:
- Apenas
CREATE ASSEMBLY FROM BINARY
tem suporte. Consulte CRIAR ASSEMBLY A PARTIR DE BINÁRIO. - Não há suporte para
CREATE ASSEMBLY FROM FILE
. Consulte CRIAR ASSEMBLY A PARTIR DE ARQUIVO. ALTER ASSEMBLY
não pode referenciar arquivos. Consulte ALTERAR ASSEMBLY.
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.
Pesquisa semântica de texto completo
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
ouOPENROWSET
como uma alternativa para importação de arquivo ou carregar arquivos usando um pool de SQL sem servidor no Azure Synapse Analytics.
Operações:
sp_dropserver
é compatível com o descarte um servidor vinculado. Consulte sp_dropserver.- A função
OPENROWSET
pode ser usada para executar consultas somente em instâncias SQL Server. Eles podem ser gerenciados localmente ou em máquinas virtuais. Consulte OPENROWSET. - A função OPENDATASOURCE pode ser usada para executar consultas somente nas instâncias do SQL Server. Eles podem ser gerenciados localmente ou em máquinas virtuais. Um exemplo é
SELECT * FROM OPENDATASOURCE('SQLNCLI', '...').AdventureWorks2022.HumanResources.Employee
. Só há suporte para os valoresSQLNCLI
,SQLNCLI11
,SQLOLEDB
eMSOLEDBSQL
como provedor. O SQL Server Native Client (geralmente abreviado como SNAC) foi removido do SQL Server 2022 e do SSMS (SQL Server Management Studio) 19. O SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o provedor OLE DB herdado da Microsoft para o SQL Server (SQLOLEDB) não são recomendados para um novo desenvolvimento. Alterne para o novo Driver do Microsoft OLE DB para SQL Server (MSOLEDBSQL) ou o Microsoft ODBC Driver for SQL Server mais recente no futuro. - Os servidores vinculados não podem ser usados para arquivos de leitura (Excel, CSV) dos compartilhamentos de rede. Tente usar BULK INSERT, OPENROWSET, que lê arquivos CSV do Armazenamento de Blobs do Azure, ou um servidor vinculado que faz referência a um pool de SQL sem servidor no Synapse Analytics. Acompanhe essas solicitações no item de comentário da Instância Gerenciada de SQL
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:
- Replicação entre um editor de MI do SQL e um assinante de MI do SQL
- Replicação entre um editor de MI do SQL, um distribuidor de MI do SQL e um assinante do SQL Server
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, incluindoWITH
comoDIFFERENTIAL
,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 tiverAUTO_CLOSE=ON
.RECOVERY FULL
se um banco de dados no arquivo .bak tiver modelo de recuperaçãoSIMPLE
ouBULK_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
eRESTRICTED_USER
são convertidas emMULTI_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 backupWITH 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, objetosFILESTREAM
ouFILETABLE
) 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 usarCREATE ROUTE
comADDRESS
em vez deLOCAL
ou um nome DNS de outra Instância Gerenciada de SQL. A porta é sempre 4022.ALTER ROUTE
: não é possível usarALTER ROUTE
comADDRESS
em vez deLOCAL
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 incluisp_addextendedproc
esp_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
esp_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, comomyinstance.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 emsys.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 detempdb
em uma camada Comercialmente Crítico é limitado pelo tamanho do armazenamento da Instância Gerenciada de SQL. O tamanho do arquivo de logtempdb
é limitado a 120 GB na camada uso geral. Algumas consultas podem retornar um erro se precisarem de mais de 24 GB por núcleo emtempdb
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 atempdb
.- 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 emtempdb
após uma reinicialização ou um failover porquetempdb
não obtém sua lista inicial de objetos do banco de dadosmodel
. Você deve criar objetos emtempdb
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:
- Funções gerais
- TargetServersRole
- Funções de banco de dados fixas
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
- Funções de DatabaseMail:
- DatabaseMailUserRole
- Funções dos serviços de integração:
- db_ssisadmin
- db_ssisltduser
- db_ssisoperator
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.
Conteúdo relacionado
- O que é Instância Gerenciada de SQL do Azure?
- Comparação de recursos: Banco de Dados SQL do Azure e Instância Gerenciada de SQL do Azure
- Quais as novidades na Instância Gerenciada de SQL do Azure?
- Problemas conhecidos da Instância Gerenciada de SQL do Azure
- Início Rápido: Criar uma Instância Gerenciada do SQL Azure