Compartilhar via


Adicionar uma conexão a um Banco de Dados SQL do Azure

Com os serviços conectados do Visual Studio, você pode se conectar ao Banco de Dados SQL do Azure, a um emulador local (por exemplo, durante o desenvolvimento) ou a um banco de dados local do SQL Server. Para SQL Server local, consulte Conectar-se a um banco de dados.

Com o Visual Studio, é possível conectar qualquer um dos seguintes tipos de projeto usando o recurso de Serviços Conectados:

  • ASP.NET Core
  • .NET Core (incluindo aplicativo de console, WPF, Windows Forms, biblioteca de classes)
  • Função de trabalho do .NET Core
  • Azure Functions
  • Aplicativo de console do .NET Framework
  • ASP.NET Modelo-Visão-Controlador (MVC) (estrutura .NET)
  • Aplicativo da Plataforma Universal do Windows

A funcionalidade do serviço conectado adiciona todas as referências necessárias e o código de conexão ao seu projeto, bem como modifica os arquivos de configuração adequadamente.

Pré-requisitos

Conectar-se ao Banco de Dados SQL do Azure usando os Serviços Conectados

  1. Abra o projeto no Visual Studio.

  2. No Gerenciador de Soluções, clique com o botão direito do mouse no nó serviço Conectados e, no menu de contexto, selecione Adicionar para abrir o menu de serviços disponíveis.

    Captura de tela mostrando as opções de menu de contexto dos Serviços Conectados.

    Se você não vir o nó Serviços conectados, escolha Projeto>Serviços conectados>Adicionar.

  3. Escolha Banco de dados do SQL Server. A página Conectar-se à dependência é exibida. Você deverá ver várias opções:

    • SQL Server Express LocalDB, a oferta interna do banco de dados SQL instalada com o Visual Studio
    • Banco de dados do SQL Server em um contêiner local em seu computador
    • Banco de dados do SQL Server, um SQL Server local na rede local
    • Banco de dados SQL do Azure para o banco de dados SQL em execução como um serviço do Azure

    Você pode reduzir o custo e simplificar o desenvolvimento antecipado começando com um banco de dados local. Você pode migrar para o serviço ativo no Azure posteriormente repetindo essas etapas e escolhendo outra opção. Se você criar um banco de dados localmente que deseja recriar no Azure, poderá migrar seu banco de dados para o Azure naquele momento.

    Captura de tela mostrando as opções do Banco de dados SQL.

    Para se conectar ao serviço do Azure, prossiga para a próxima etapa ou, se ainda não estiver conectado, entre em sua conta do Azure antes de continuar. Se não tiver uma conta do Azure, você poderá assinar uma versão de avaliação gratuita.

  4. Na tela Configurar Banco de Dados SQL do Azure, selecione um Banco de Dados SQL do Azure existente e selecione Avançar.

    Se precisar criar um componente, passe para a próxima etapa. Caso contrário, passe à etapa 7.

    Captura de tela mostrando a tela

  5. Para criar um banco de dados SQL do Azure:

    1. Selecione Criar pelo sinal de adição verde.

    2. Preencha o Banco de Dados SQL do Azure: Criar Novo e selecione Criar.

      Captura de tela mostrando a tela

    3. Quando a tela Configurar Banco de Dados SQL do Azure é exibida, o novo banco de dados aparece na lista. Selecione o novo banco de dados na lista e selecione Avançar.

  6. Insira um nome de cadeia de conexão ou escolha o padrão e, em seguida, escolha Configurações Adicionais.

    Captura de tela mostrando a tela

    Observação

    Com o Visual Studio 2022 versão 17.12 e posterior, esse procedimento usa a identidade gerenciada do Microsoft Entra, um método de autenticação sem senha, para se conectar ao banco de dados. O aviso nesta tela significa que você precisa executar uma etapa manual no Portal do Azure depois de concluir este procedimento no Visual Studio. Consulte Autenticação do Microsoft Entra.

  7. Escolha se deseja que a cadeia de conexão seja armazenada em um arquivo de segredos local ou no Azure Key Vault e escolha Avançar.

    Captura de tela mostrando as opções de onde armazenar a cadeia de conexão do Banco de Dados SQL do Azure.

  8. A tela Resumo das alterações mostra todas as modificações que serão feitas no projeto se você concluir o processo. Se as alterações parecerem corretas, escolha Concluir.

    Captura de tela mostrando a seção

    Se solicitado a definir regras de firewall, escolha Sim.

    Captura de tela mostrando regras de firewall.

  9. No Gerenciador de Soluções, clique duas vezes no nó Serviços Conectados para abrir a guia Serviços Conectados. A conexão é exibida na seção Dependências de Serviço:

    Captura de tela mostrando a seção

    Se você clicar nos três pontos ao lado da dependência adicionada, poderá ver várias opções, como Conectar para reabrir o assistente e alterar a conexão. Você também pode clicar nos três pontos no canto superior direito da janela para ver as opções para iniciar dependências locais, alterar as configurações e muito mais.

  10. Se você estiver usando a identidade gerenciada (Visual Studio 17.12 e posterior), consulte a próxima seção para configurar o usuário de identidade gerenciada no banco de dados SQL do Azure.

autenticação do Microsoft Entra

Com o Visual Studio 2022 versão 17.12 e posterior, o procedimento de serviços conectados usa a autenticação do Microsoft Entra, que é o método mais seguro de autenticação. No entanto, o Visual Studio não cria o usuário administrador do Microsoft Entra no banco de dados SQL do Azure para você automaticamente. Se não houver um usuário administrador do Microsoft Entra, a conexão não será autenticada com êxito.

Você pode usar o Portal do Azure, o PowerShell ou a CLI do Azure para criar o usuário administrador do Microsoft Entra. Para obter instruções detalhadas para cada um desses métodos, consulte Definir o usuário administrador do Microsoft Entra.

Depois de concluir o processo de Serviços Conectados, você precisará criar um usuário SQL que corresponda à identidade gerenciada e definir permissões executando instruções SQL no banco de dados. Entre no editor de consultas no Portal do Azure como seu usuário administrador do Microsoft Entra e execute instruções como as seguintes:

CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];

GO

O <identity-name> é o nome da identidade gerenciada na ID do Microsoft Entra. Se a identidade for atribuída ao sistema, o nome será sempre igual ao nome do aplicativo do Serviço de Aplicativo. Em um slot de implantação, o nome da identidade atribuída ao sistema é <app-name>/slots/<slot-name>. Para conceder permissões a um grupo do Microsoft Entra, use o nome de exibição do grupo (por exemplo, myAzureSQLDBAccessGroup). Consulte Tipos de identidade gerenciada e identidades gerenciadas no Microsoft Entra para SQL do Azure. As funções que você adiciona dependem de seus casos de uso. Consulte ALTER ROLE.

Se o código fizer referência System.Data.SqlClientao , você precisará atualizar para Microsoft.Data.SqlCliento , pois System.Data.SqlClient o não oferece suporte à autenticação do Microsoft Entra. Para atualizar, adicione uma referência ao pacote NuGet Microsoft.Data.SqlClient e atualize todas as diretivas using que fazem referência System.Data.SqlClient ao Microsoft.Data.SqlClient namespace. Existem algumas mudanças de comportamento; consulte Folha de dicas de portabilidade.

  1. Abra o projeto no Visual Studio.

  2. No Gerenciador de Soluções, clique com o botão direito do mouse no nó serviço Conectados e, no menu de contexto, selecione Adicionar para abrir o menu de serviços disponíveis.

    Captura de tela mostrando as opções de menu de contexto dos Serviços Conectados.

    Se você não vir o nó Serviços conectados, escolha Projeto>Serviços conectados>Adicionar.

  3. Escolha Banco de dados do SQL Server. A página Conectar-se à dependência é exibida. Você deverá ver várias opções:

    • SQL Server Express LocalDB, a oferta interna do banco de dados SQL instalada com o Visual Studio
    • Banco de dados do SQL Server em um contêiner local em seu computador
    • Banco de dados do SQL Server, um SQL Server local na rede local
    • Banco de dados SQL do Azure para o banco de dados SQL em execução como um serviço do Azure

    Você pode reduzir o custo e simplificar o desenvolvimento antecipado começando com um banco de dados local. Você pode migrar para o serviço ativo no Azure posteriormente repetindo essas etapas e escolhendo outra opção. Se você criar um banco de dados localmente que deseja recriar no Azure, poderá migrar seu banco de dados para o Azure naquele momento.

    Captura de tela mostrando as opções do Banco de dados SQL.

    Para se conectar ao serviço do Azure, prossiga para a próxima etapa ou, se ainda não estiver conectado, entre em sua conta do Azure antes de continuar. Se não tiver uma conta do Azure, você poderá assinar uma versão de avaliação gratuita.

  4. Na tela Configurar Banco de Dados SQL do Azure, selecione um Banco de Dados SQL do Azure existente e selecione Avançar.

    Se precisar criar um componente, passe para a próxima etapa. Caso contrário, passe à etapa 7.

    Captura de tela mostrando a tela

  5. Para criar um banco de dados SQL do Azure:

    1. Selecione Criar pelo sinal de adição verde.

    2. Preencha o Banco de Dados SQL do Azure: Criar Novo e selecione Criar.

      Captura de tela mostrando a tela

    3. Quando a tela Configurar Banco de Dados SQL do Azure é exibida, o novo banco de dados aparece na lista. Selecione o novo banco de dados na lista e selecione Avançar.

  6. Insira um nome de cadeia de conexão ou escolha o padrão e escolha se deseja que a cadeia de conexão seja armazenada em um arquivo de segredos local ou no Azure Key Vault.

    Captura de tela mostrando a tela

  7. A tela Resumo das alterações mostra todas as modificações que serão feitas no projeto se você concluir o processo. Se as alterações parecerem corretas, escolha Concluir.

    Captura de tela mostrando a seção

    Se solicitado a definir regras de firewall, escolha Sim.

    Captura de tela mostrando regras de firewall.

  8. No Gerenciador de Soluções, clique duas vezes no nó Serviços Conectados para abrir a guia Serviços Conectados. A conexão é exibida na seção Dependências de Serviço:

    Captura de tela mostrando a seção

    Se você clicar nos três pontos ao lado da dependência adicionada, poderá ver várias opções, como Conectar para reabrir o assistente e alterar a conexão. Você também pode clicar nos três pontos no canto superior direito da janela para ver as opções para iniciar dependências locais, alterar as configurações e muito mais.

Acessar a cadeia de conexão

Saiba como armazenar segredos com segurança seguindo o Armazenamento seguro de segredos do aplicativo em desenvolvimento no ASP.NET Core. Em particular, para ler a cadeia de conexão do repositório de segredos, você poderá adicionar código como em Ler o segredo por meio da API de configuração. Confira também Injeção de dependência no ASP.NET Core.

Migrações do Entity Framework

Pode ser conveniente trabalhar com um armazenamento de dados local durante o desenvolvimento antecipado, mas com o Entity Framework Core, quando você estiver pronto para migrar para a nuvem, poderá usar o suporte do Visual Studio para migração do Entity Framework para mover seu banco de dados ou mesclar alterações com um armazenamento de dados remoto. Confira Visão geral das migrações.

Na guia Serviços Conectados, você pode encontrar os comandos de migração clicando nos três pontos, conforme mostrado na captura de tela:

Captura de tela mostrando comandos de migração.

Os comandos estão disponíveis lá para criar migrações, aplicá-las diretamente ou gerar scripts SQL que aplicam as migrações.

Adicionar migração

Quando uma alteração de modelo de dados é introduzida, você pode usar as ferramentas do Entity Framework Core para adicionar uma migração correspondente que descreve no código as atualizações necessárias para manter o esquema de banco de dados em sincronia. O Entity Framework Core compara o modelo atual com um instantâneo do modelo antigo para determinar as diferenças e gera arquivos de origem de migração. Os arquivos são adicionados ao seu projeto, geralmente em uma pasta chamada Migrações, e podem ser rastreados no controle do código-fonte do projeto, como qualquer outro arquivo de origem.

Ao escolher essa opção, você será solicitado a fornecer o nome da classe de contexto que representa o esquema de banco de dados que deseja migrar.

Captura de tela mostrando a adição de uma migração do Entity Framework.

Atualizar banco de dados

Depois que uma migração for criada, ela poderá ser aplicada a um banco de dados. O Entity Framework atualiza seu banco de dados e seu esquema com as alterações especificadas no código de migração. Ao escolher essa opção, você será solicitado a fornecer o nome da classe de contexto que representa o esquema de banco de dados que deseja migrar.

Gerar Script SQL

A maneira recomendada de implantar migrações em um banco de dados de produção é gerando scripts SQL. As vantagens dessa estratégia incluem o seguinte:

  • Os scripts SQL podem ser revisados quanto à precisão; isso é importante, pois a aplicação de alterações de esquema aos bancos de dados de produção é uma operação potencialmente perigosa que pode envolver perda de dados.
  • Em alguns casos, os scripts podem ser ajustados para atender às necessidades específicas de um banco de dados de produção.
  • Os scripts SQL podem ser usados em conjunto com uma tecnologia de implantação e podem até mesmo ser gerados como parte do processo de CI.
  • Os scripts SQL podem ser fornecidos a um DBA e podem ser gerenciados e arquivados separadamente.

Ao usar essa opção, é solicitado que você forneça a classe de contexto do banco de dados e o local do arquivo de script.

Captura de tela mostrando a opção Gerar script SQL.

Abrir no Pesquisador de Objetos do SQL Server

Para maior praticidade, esse comando permite que você acesse diretamente o Pesquisador de Objetos do SQL Server, possibilitando exibir tabelas e outras entidades de banco de dados e trabalhar diretamente com seus dados. Confira Pesquisador de Objetos.

Captura de tela mostrando o Pesquisador de Objetos do SQL Server.

Próximas etapas

Você pode continuar com os guias de início rápido para banco de dados SQL do Azure, mas, em vez de começar do início, você pode começar depois que a conexão inicial for configurada. Se você estiver usando o Entity Framework, poderá começar em Adicionar o código para se conectar ao Banco de Dados SQL do Azure. Se você estiver usando SqlClient, ou classes de dados ADO.NET, você pode começar em Adicionar o código para se conectar ao Banco de Dados SQL do Azure.

Seu código não corresponderá exatamente ao que é usado nos inícios rápidos, que usam uma forma diferente de obter a cadeia de conexão. As cadeias de conexão são segredos e são armazenadas em segurança, conforme explicado em Armazenamento seguro de segredos do aplicativo no desenvolvimento em ASP.NET Core. Em particular, para ler a cadeia de conexão do repositório de segredos, você poderá adicionar código como em Ler o segredo por meio da API de configuração.

Em projetos ASP.NET Core, a configuração de conexão ou a cadeia de conexão criada pelos Serviços Conectados está disponível em um objeto de configuração. Você pode acessá-la por uma propriedade na classe WebApplicationBuilder (builder em muitos modelos de projeto), como no seguinte exemplo:

var connection = builder.Configuration["ConnectionStrings:DatabaseConnection"];

A cadeia de caracteres a ser fornecida à propriedade Configuration deve corresponder à chave no secrets.json ou no Azure Key Vault, que você forneceu no procedimento Serviços Conectados. Por exemplo, com o Visual Studio 2022 17.12 e posterior, a configuração de conexão é armazenada em secrets.json como:

{
  "ConnectionStrings:DatabaseConnection": "Server=tcp:webapplication16dbserver.database.windows.net;Authentication=Active Directory Default;Database=WebApplication16_db;",
}

Em projetos ASP.NET Core, a configuração de conexão ou a cadeia de conexão criada pelos Serviços Conectados está disponível em um objeto de configuração. Você pode acessá-la por uma propriedade na classe WebApplicationBuilder (builder em muitos modelos de projeto), como no seguinte exemplo:

var connection = builder.Configuration["ConnectionStrings:ConnectionString1"];