Partilhar via


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

Com o Visual Studio Connected Services, 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 SQL Server local. Para o SQL Server local, veja Conectar-se a um banco de dados.

Com o Visual Studio, você pode se conectar a partir de qualquer um dos seguintes tipos de projeto usando o recurso Serviços Conectados:

  • ASP.NET Core
  • .NET Core (incluindo aplicativo de console, WPF, Windows Forms, biblioteca de classes)
  • Função de trabalho principal do .NET
  • Funções do Azure
  • Aplicativo de console do .NET Framework
  • Modelo ASP.NET -View-Controller (MVC) (.NET Framework)
  • Aplicativo da Plataforma Universal do Windows

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

Pré-requisitos

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

  1. Abra seu projeto no Visual Studio.

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

    Captura de ecrã a mostrar as opções do menu de contexto dos Serviços Ligados.

    Se você não vir o nó Serviços Conectados, escolha Project>Connected Services>Adicionar.

  3. Escolha Base de Dados do SQL Server. A página Conectar à dependência é exibida. Você deve ver várias opções:

    • SQL Server Express LocalDB, a funcionalidade incorporada da Base de Dados SQL instalada com o Visual Studio
    • Banco de dados do SQL Server em um contêiner local em sua máquina
    • 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 custos e simplificar o desenvolvimento inicial começando com um banco de dados local. Você pode migrar para o serviço ao vivo no Azure mais tarde, 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 nesse momento.

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

    Se você quiser se conectar ao serviço do Azure, continue para a próxima etapa ou, se ainda não estiver conectado, entre na sua conta do Azure antes de continuar. Se não tiver uma conta do Azure, pode inscrever-se para uma avaliação gratuita .

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

    Se você precisar criar um novo componente, vá para a próxima etapa. Caso contrário, pule para a etapa 7.

    Captura de ecrã a mostrar o ecrã

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

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

    2. Preencha a tela Banco de Dados SQL do Azure: Criar novo, e selecione Criar.

      Captura de tela mostrando a tela

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

  6. Introduza um nome de cadeia de ligação ou escolha a predefinição e, em seguida, selecione Definições Adicionais.

    Captura de ecrã mostrando

    Observação

    Com o Visual Studio 2022 versão 17.12 e posterior, este 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 a autenticação do Microsoft Entra .

  7. Escolha se deseja que a cadeia de conexão seja armazenada em um arquivo secreto local ou em Cofre de Chaves do Azuree, em seguida, 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 seu projeto se você concluir o processo. Se as alterações parecerem adequadas, escolha Concluir.

    Captura de ecrã a mostrar a secção

    Se lhe for pedido para definir regras de firewall, escolha Sim.

    Captura de ecrã a mostrar regras de firewall.

  9. No Explorador de Soluções, faça duplo clique na pasta Serviços Conectados para abrir o separador Serviços Conectados. A conexão aparece 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 Connect 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 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 em seu 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 de autenticação mais seguro. 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 dos 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 no Microsoft Entra ID. Se a identidade for atribuída pelo sistema, o nome será sempre o mesmo que o nome do seu aplicativo do Serviço de Aplicativo. Para um slot de implantação, o nome de sua identidade atribuída ao sistema é <app-name>/slots/<slot-name>. Para conceder permissões para um grupo do Microsoft Entra, use o nome de exibição do grupo em vez disso (por exemplo, myAzureSQLDBAccessGroup). Consulte Tipos de Identidade Gerenciada e Identidades Gerenciadas no Microsoft Entra para Azure SQL. As funções que você adiciona dependem de seus casos de uso. Consulte ALTER ROLE.

Se o seu código faz referência a System.Data.SqlClient, terá de atualizar para Microsoft.Data.SqlClient, pois System.Data.SqlClient não oferece suporte à autenticação do Microsoft Entra. Para atualizar, adicione uma referência ao pacote NuGet Microsoft.Data.SqlCliente atualize todas as diretivas de uso que fazem referência a System.Data.SqlClient para fazer referência ao namespace Microsoft.Data.SqlClient. Existem algumas mudanças de comportamento; consulte guia de portabilidade.

Aceder à cadeia de conexão

Saiba como armazenar segredos com segurança seguindo Armazenamento seguro de segredos de aplicativos em desenvolvimento no ASP.NET Core. Em especial, para ler a cadeia de conexão do armazenamento de segredos, pode-se adicionar código como em Ler o segredo por meio da API de configuração. Consulte 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 inicial, 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. Consulte 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 para criar novas 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 descreva no código as atualizações necessárias para manter o esquema de banco de dados sincronizado. 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 Migrations e podem ser rastreados no controle de origem do seu 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 base 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 o script SQL

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

  • Os scripts SQL podem ser revisados quanto à precisão; Isso é importante, pois aplicar alterações de esquema a 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 seu processo de CI.
  • Os scripts SQL podem ser fornecidos a um DBA e podem ser gerenciados e arquivados separadamente.

Quando você usa essa opção, é perguntada a classe de contexto do banco de dados e o local do arquivo de script.

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

Abrir no Pesquisador de Objetos do SQL Server

Por conveniência, esse comando permite que você vá para o Pesquisador de Objetos do SQL Server, para que possa exibir tabelas e outras entidades de banco de dados e trabalhar diretamente com seus dados. Consulte Pesquisador de objetos.

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

Próximos passos

Você pode continuar com os inícios rápidos para o 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 ADO.NET classes de dados, poderá 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 maneira diferente de obter a cadeia de conexão. As cadeias de conexão são segredos e são armazenadas com segurança, conforme explicado em Armazenamento seguro de segredos de aplicativos em desenvolvimento no ASP.NET Core. Em especial, para ler a cadeia de conexão do armazenamento de segredos, pode-se 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 cadeia de conexão criada pelos Serviços Conectados está disponível em um objeto de configuração. Você pode acessá-lo por uma propriedade na classe WebApplicationBuilder (builder em muitos modelos de projeto), como no exemplo a seguir:

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

A cadeia de caracteres a ser fornecida à propriedade Configuration deve corresponder à chave no secrets.json ou no Cofre de Chaves do Azure, 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;",
}