Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Soluções para problemas comuns de conectividade, autenticação e configuração de entidades SQL Server no Data API Builder.
Perguntas frequentes
O que é o suporte para SQL Server em DAB?
O Data API Builder suporta Microsoft SQL Server e Azure SQL como back-ends de bases de dados relacionais. O DAB liga-se usando o driver Microsoft.Data.SqlClient e traduz pedidos REST e GraphQL em consultas T-SQL. São suportadas tanto instâncias SQL Server on-premises como Azure SQL Database.
Que formato de string de ligação o SQL Server utiliza?
O DAB usa strings de ligação no estilo ADO.NET para o SQL Server. Uma corda típica assemelha-se a Server=localhost,1433;Database=mydb;User Id=sa;Password=yourpassword;TrustServerCertificate=True;. Defina a cadeia de ligação no data-source.connection-string campo de dab-config.json ou passe-a através da --connection-string opção em dab init.
Que modos de autenticação são suportados?
O DAB suporta autenticação SQL (nome de utilizador e palavra-passe), Autenticação Integrada do Windows e autenticação Microsoft Entra (anteriormente Azure Active Directory) para Azure SQL. Para usar a autenticação Entra, defina Authentication=Active Directory Default ou Active Directory Managed Identity na cadeia de ligação e assegure que a identidade gerida ou o principal de serviço recebeu acesso à base de dados.
Problemas comuns
Não é possível ligar-se ao contentor do SQL Server
Sintoma: O DAB falha em iniciar com um erro de ligação como A network-related or instance-specific error occurred.
Causa: A porta do container do SQL Server não está mapeada corretamente, o nome do host está errado ou o contentor ainda não está pronto para aceitar ligações.
Resolução: Verifique se o contentor está a executar com docker ps. Confirma o mapeamento de portas (por defeito 1433) e usa localhost,1433 na cadeia de ligação. Adicione TrustServerCertificate=True se estiver a usar um certificado auto-assinado. Se o contentor acabou de começar, espere alguns segundos que o SQL Server se inicialize antes de iniciar o DAB.
Falha de login para o utilizador
Sintoma: Os registos DAB mostram Login failed for user 'sa' um erro de autenticação semelhante.
Causa: O nome de utilizador, palavra-passe ou modo de autenticação na cadeia de ligação não corresponde à configuração do SQL Server. O SQL Server pode também estar a correr em modo apenas de autenticação do Windows.
Resolução: Confirme que as credenciais correspondem às definidas quando o contentor ou servidor foi criado. Se usares um contentor, verifica a SA_PASSWORD variável de ambiente. Para permitir a autenticação SQL numa instância existente, defina o modo de autenticação do servidor para SQL Server e o modo de autenticação do Windows no SQL Server Management Studio em Segurança de Propriedades > do Servidor.
Erro de entidade não encontrada
Sintoma: Os pedidos REST ou GraphQL retornam um 404 erro de esquema ou indicam que a tabela fonte da entidade não existe.
Causa: O nome da tabela ou prefixo de esquema no campo da source entidade não corresponde ao objeto real da base de dados. Os nomes das tabelas do SQL Server são insensíveis a maiúsculas e minúsculas por padrão, mas o prefixo de esquema (por exemplo, dbo) deve estar presente se o esquema padrão não for utilizado.
Resolução: Verifique o source valor em dab-config.json. Use um nome totalmente qualificado, como dbo.Products. Executa SELECT * FROM INFORMATION_SCHEMA.TABLES na base de dados de destino para confirmar o nome da tabela e o esquema.
Firewall ou erro de rede ao ligar-se ao Azure SQL
Sintoma: As ligações ao Azure SQL Database expiram ou retornam Cannot open server ... requested by the login.
Causa: O endereço IP do cliente não é permitido pelas regras do firewall do servidor SQL do Azure, ou a definição de acesso ao serviço do Azure está desativada.
Resolução: No portal Azure, navegue até ao recurso SQL Server e selecione Rede. Adicione o endereço IP do cliente à lista de permissões do firewall, ou ative o Permitir que os serviços e recursos Azure acedam a este servidor se o DAB estiver a correr no Azure. Para autenticação de identidade gerida, verifique se a identidade foi adicionada como utilizador de base de dados com CREATE USER [identity-name] FROM EXTERNAL PROVIDER.
As colunas JSON não são detetadas automaticamente
Sintoma: Uma coluna com um tipo JSON ou NVARCHAR(MAX) que armazena dados JSON não é exposta como um objeto estruturado no esquema da API.
Causa: O Data API Builder ainda não deteta e mapeia automaticamente colunas JSON no Azure SQL. Esta é uma limitação conhecida registada na edição #444 do GitHub.
Resolução: Não há solução alternativa neste momento. A coluna será exposta como um valor de cadeia simples. Siga a edição do GitHub para atualizações sobre quando o suporte nativo a colunas JSON é adicionado.