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.
Aplica-se a:Banco de Dados SQL do Azure
Este guia de início rápido descreve como conectar um aplicativo a um banco de dados no Banco de Dados SQL do Azure e executar consultas usando o .NET e a biblioteca Microsoft.Data.SqlClient . Este início rápido segue a abordagem sem senha recomendada para se conectar ao banco de dados. Você pode saber mais sobre conexões sem senha no hub sem senha.
Pré-requisitos
- Uma assinatura do Azure.
- Um banco de dados SQL do Azure configurado para autenticação com o Microsoft Entra ID (anteriormente Azure Ative Directory). Você pode criar um usando o início rápido de criação de banco de dados.
- A versão mais recente do Azure CLI.
- Visual Studio ou posterior com a carga de trabalho de ASP.NET e Desenvolvimento Web.
- .NET 7.0 ou posterior.
Configurar o banco de dados
Conexões seguras e sem senha com o Banco de Dados SQL do Azure exigem determinadas configurações de banco de dados. Verifique as seguintes configurações em seu servidor lógico no Azure para se conectar corretamente ao Banco de Dados SQL do Azure em ambientes locais e hospedados:
Para conexões de desenvolvimento local, verifique se o servidor lógico está configurado para permitir que o endereço IP da máquina local e outros serviços do Azure se conectem:
Navegue até a página Networking do seu servidor.
Alterne o botão de rádio Redes selecionadas para mostrar opções de configuração adicionais.
Selecione Adicionar o endereço IPv4 do cliente (xx.xx.xx.xx) para adicionar uma regra de firewall que habilitará conexões do endereço IPv4 da máquina local. Como alternativa, você também pode selecionar + Adicionar uma regra de firewall para inserir um endereço IP específico à sua escolha.
Verifique se a caixa de seleção Permitir que os serviços e recursos do Azure acessem este servidor está marcada.
Advertência
Habilitar a configuração Permitir que os serviços e recursos do Azure acessem esse servidor não é uma prática de segurança recomendada para cenários de produção. Aplicativos reais devem implementar abordagens mais seguras, como restrições de firewall mais fortes ou configurações de rede virtual.
Você pode ler mais sobre configurações de segurança de banco de dados nos seguintes recursos:
O servidor também deve ter a autenticação do Microsoft Entra habilitada e ter uma conta de administrador do Microsoft Entra atribuída. Para conexões de desenvolvimento local, a conta de administrador do Microsoft Entra deve ser uma conta com a qual você também pode fazer logon no Visual Studio ou na CLI do Azure localmente. Você pode verificar se o seu servidor tem a autenticação do Microsoft Entra habilitada na página ID do Microsoft Entra do seu servidor lógico.
Se estiver a utilizar uma conta pessoal do Azure, certifique-se de que tem o Microsoft Entra configurado e configurado para o Azure SQL Database para atribuir a sua conta como administrador do servidor. Se estiver a usar uma conta corporativa, o Microsoft Entra provavelmente já estará configurado para si.
Criar o projeto
Para as etapas futuras, crie uma API Web Mínima do .NET usando a CLI do .NET ou o Visual Studio 2022.
No menu Visual Studio, navegue até Arquivo>Novo>Projeto...
Na janela de diálogo, digite ASP.NET na caixa de pesquisa do modelo de projeto e selecione o resultado da API Web principal ASP.NET. Escolha Avançar na parte inferior da caixa de diálogo.
Para o Nome do Projeto, digite DotNetSQL. Deixe os valores padrão para o restante dos campos e selecione Avançar.
Para o Framework, selecione .NET 7.0 e desmarque Utilizar controladores (desmarque para utilizar APIs minimalistas). Este início rápido utiliza um modelo de API mínima para simplificar a criação e configuração de endpoints.
Selecione Criar. O novo projeto é aberto dentro do ambiente do Visual Studio.
Adicione a biblioteca Microsoft.Data.SqlClient
Para se conectar ao Banco de Dados SQL do Azure usando o .NET, instale o Microsoft.Data.SqlClient. Este pacote atua como um provedor de dados para se conectar a bancos de dados, executar comandos e recuperar resultados.
Observação
Certifique-se de instalar Microsoft.Data.SqlClient e não System.Data.SqlClient.
Microsoft.Data.SqlClient é uma versão mais recente da biblioteca de cliente SQL que fornece recursos adicionais.
Na janela Explorador de Soluções, clique com o botão direito no nó Dependências do projeto e selecione Gerir Pacotes NuGet.
Na janela resultante, procure SqlClient. Localize o
Microsoft.Data.SqlClientresultado e selecione Instalar.
Configurar a cadeia de ligação
Para desenvolvimento local com conexões sem senha ao Banco de Dados SQL do Azure, adicione a seção a seguir ConnectionStrings ao appsettings.json arquivo. Substitua os marcadores <database-server-name> e <database-name> pelos seus próprios valores.
"ConnectionStrings": {
"AZURE_SQL_CONNECTIONSTRING": "Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=\"Active Directory Default\";"
}
A cadeia de conexão sem senha define um valor de configuração de , que instrui a Microsoft.Data.SqlClient biblioteca a se conectar ao Banco de Authentication="Active Directory Default"Dados SQL do Azure usando uma classe chamada DefaultAzureCredential.
DefaultAzureCredential habilita conexões sem senha para serviços do Azure e é fornecido pela biblioteca de Identidade do Azure da qual a biblioteca de cliente SQL depende.
DefaultAzureCredential Suporta vários métodos de autenticação e determina quais usar em tempo de execução para diferentes ambientes.
Por exemplo, quando o aplicativo é executado localmente, DefaultAzureCredential autentica por meio do usuário com quem você está conectado ao Visual Studio ou de outras ferramentas locais, como a CLI do Azure. Depois que o aplicativo é implantado no Azure, o mesmo código descobre e aplica a identidade gerenciada associada ao aplicativo hospedado, que você configurará posteriormente. A visão geral da biblioteca de Identidades do Azure explica a ordem e os locais nos quais DefaultAzureCredential procura credenciais.
Observação
Cadeias de conexão sem senha são seguras para confirmar o controle do código-fonte, pois não contêm segredos como nomes de usuário, senhas ou chaves de acesso.
Adicionar o código para se conectar ao Banco de Dados SQL do Azure
Substitua o Program.cs conteúdo do arquivo pelo código a seguir, que executa as seguintes etapas importantes:
- Recupera a cadeia de conexão sem senha de
appsettings.json - Cria uma
Personstabela no banco de dados durante a inicialização (somente para cenários de teste) - Cria um ponto de
HTTP GETextremidade para recuperar todos os registros armazenados naPersonstabela - Cria um ponto de
HTTPextremidade POST para adicionar novos registros àPersonstabela
using Microsoft.Data.SqlClient;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// For production scenarios, consider keeping Swagger configurations behind the environment check
// if (app.Environment.IsDevelopment())
// {
app.UseSwagger();
app.UseSwaggerUI();
// }
app.UseHttpsRedirection();
string connectionString = app.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING")!;
try
{
// Table would be created ahead of time in production
using var conn = new SqlConnection(connectionString);
conn.Open();
var command = new SqlCommand(
"CREATE TABLE Persons (ID int NOT NULL PRIMARY KEY IDENTITY, FirstName varchar(255), LastName varchar(255));",
conn);
using SqlDataReader reader = command.ExecuteReader();
}
catch (Exception e)
{
// Table may already exist
Console.WriteLine(e.Message);
}
app.MapGet("/Person", () => {
var rows = new List<string>();
using var conn = new SqlConnection(connectionString);
conn.Open();
var command = new SqlCommand("SELECT * FROM Persons", conn);
using SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
rows.Add($"{reader.GetInt32(0)}, {reader.GetString(1)}, {reader.GetString(2)}");
}
}
return rows;
})
.WithName("GetPersons")
.WithOpenApi();
app.MapPost("/Person", (Person person) => {
using var conn = new SqlConnection(connectionString);
conn.Open();
var command = new SqlCommand(
"INSERT INTO Persons (firstName, lastName) VALUES (@firstName, @lastName)",
conn);
command.Parameters.Clear();
command.Parameters.AddWithValue("@firstName", person.FirstName);
command.Parameters.AddWithValue("@lastName", person.LastName);
using SqlDataReader reader = command.ExecuteReader();
})
.WithName("CreatePerson")
.WithOpenApi();
app.Run();
Finalmente, adicione a Person classe à parte inferior do Program.cs arquivo. Essa classe representa um único registro na tabela do Persons banco de dados.
public class Person
{
public required string FirstName { get; set; }
public required string LastName { get; set; }
}
Executar e testar o aplicativo localmente
O aplicativo está pronto para ser testado localmente. Verifique se você está conectado ao Visual Studio ou à CLI do Azure com a mesma conta definida como administrador para seu banco de dados.
Pressione o botão Executar na parte superior do Visual Studio para iniciar o projeto de API.
Na página Swagger UI, expanda o método POST e selecione Experimente.
Modifique o JSON de exemplo para incluir valores para o
firstelastname. Selecione Executar para adicionar um novo registro ao banco de dados. A API retorna uma resposta bem-sucedida.Expanda o
GETmétodo na página da interface do usuário do Swagger e selecione Experimentar. Escolha Executare a pessoa que você acabou de criar será retornada.
Implantar no Serviço de Aplicações do Azure
O aplicativo está pronto para ser implantado no Azure. O Visual Studio pode criar um Serviço de Aplicativo do Azure e implantar seu aplicativo em um único fluxo de trabalho.
Verifique se a aplicação está parada e compilada com sucesso.
Na janela Explorador de Soluções do Visual Studio, clique com o botão direito no nó do projeto de nível superior e selecione Publicar.
Na caixa de diálogo de publicação, selecione Azure como destino de implantação e, em seguida, selecione Avançar.
Para o destino específico, selecione Serviço de Aplicativo do Azure (Windows)e, em seguida, selecione Avançar.
Selecione o + ícone para criar um novo Serviço de Aplicativo para implantar e insira os seguintes valores:
- Nome: Deixe o valor padrão.
- Nome da subscrição: Selecione a subscrição para implementar.
- Grupo de recursos: Selecione Novo e crie um novo grupo de recursos chamado msdocs-dotnet-sql.
- Plano de Hospedagem: Selecione Novo para abrir a caixa de diálogo do plano de hospedagem. Deixe os valores padrão e selecione OK.
- Selecione Criar para fechar a caixa de diálogo original. O Visual Studio cria o recurso Serviço de Aplicativo no Azure.
Depois que o recurso for criado, verifique se ele está selecionado na lista de serviços de aplicativo e selecione Avançar.
Na etapa Gerenciamento de API , marque a caixa de seleção Ignorar esta etapa na parte inferior e escolha Concluir.
Na etapa Concluir, selecione Fechar se a caixa de diálogo não fechar automaticamente.
Selecione Publicar no canto superior direito do resumo do perfil de publicação para implantar o aplicativo no Azure.
Quando a implantação termina, o Visual Studio inicia o navegador para exibir o aplicativo hospedado, mas neste momento o aplicativo não funciona corretamente no Azure. Você ainda precisa configurar a conexão segura entre o Serviço de Aplicativo e o banco de dados SQL para recuperar seus dados.
Conectar o Serviço de Aplicativo ao Banco de Dados SQL do Azure
As etapas a seguir são necessárias para criar uma conexão sem senha entre a instância do Serviço de Aplicativo e o Banco de Dados SQL do Azure:
- Crie uma identidade gerenciada para o Serviço de Aplicativo. A biblioteca de
Microsoft.Data.SqlClientincluída em seu aplicativo descobrirá automaticamente a identidade gerenciada, assim como descobriu seu usuário local do Visual Studio. - Crie um usuário do banco de dados SQL e associe-o à identidade gerenciada do Serviço de Aplicativo.
- Atribua funções SQL ao usuário do banco de dados que permitam leitura, gravação e potencialmente outras permissões.
Há várias ferramentas disponíveis para implementar essas etapas:
O Service Connector é uma ferramenta que simplifica conexões autenticadas entre diferentes serviços no Azure. Atualmente, o Service Connector dá suporte à conexão de um Serviço de Aplicativo a um banco de dados SQL por meio da CLI do Azure usando o comando az webapp connection create sql. Este único comando completa as três etapas mencionadas acima para você.
az webapp connection create sql \
-g <app-service-resource-group> \
-n <app-service-name> \
--tg <database-server-resource-group> \
--server <database-server-name> \
--database <database-name> \
--system-identity
Você pode verificar as alterações feitas pelo Service Connector nas configurações do Serviço de Aplicativo.
Navegue até à página de Identidade do seu serviço de aplicações. Na guia Sistema atribuído, o Status deve estar Ligado. Esse valor significa que uma identidade gerenciada atribuída ao sistema foi habilitada para seu aplicativo.
Navegue até a página Configuração do seu App Service. No separador Cadeias de conexão, você verá uma cadeia de conexão chamada AZURE_SQL_CONNECTIONSTRING. Selecione o texto Clique para mostrar o valor para visualizar a cadeia de conexão sem senha gerada. O nome dessa cadeia de conexão corresponde àquela que você configurou em seu aplicativo, portanto, ela será descoberta automaticamente ao ser executada no Azure.
Importante
Embora essa solução forneça uma abordagem simples para começar, ela não é uma prática recomendada para ambientes de nível de produção. Nesses cenários, o aplicativo não deve executar todas as operações usando uma única identidade elevada. Você deve tentar implementar o princípio de menor privilégio configurando várias identidades com permissões específicas para tarefas específicas.
Você pode ler mais sobre como configurar funções de banco de dados e segurança nos seguintes recursos:
Testar o aplicativo implantado
Selecione o botão Procurar na parte superior da página de visão geral do Serviço de Aplicativo para iniciar a URL raiz do seu aplicativo.
Anexe o
/swagger/index.htmlcaminho à URL para carregar a mesma página de teste do Swagger usada localmente.Execute solicitações de teste
GETe POST para verificar se os pontos de extremidade funcionam conforme o esperado.Sugestão
Se você receber um erro 500 Internal Server durante o teste, isso pode ser devido às configurações de rede do banco de dados. Verifique se o servidor lógico está configurado com as configurações descritas na seção Configurar o do banco de dados.
Seu aplicativo agora está conectado ao Banco de Dados SQL do Azure em ambientes locais e hospedados.
Limpar os recursos
Quando terminar de trabalhar com o Banco de Dados SQL do Azure, exclua o recurso para evitar custos não intencionais.
Na barra de pesquisa do portal do Azure, procure Azure SQL e selecione o resultado correspondente.
Localize e selecione seu banco de dados na lista de bancos de dados.
Na página Visão Geral do seu Banco de Dados SQL do Azure, selecione Excluir.
No Azure, tem a certeza de que deseja eliminar... Na página que se abre, digite o nome do seu banco de dados para confirmar e selecione Eliminar.