Exercício – conectar-se ao banco de dados e adicionar dados de exemplo

Concluído

Antes de conectar o banco de dados ao aplicativo, é interessante verificar se você consegue se conectar a ele, adicionar uma tabela básica e trabalhar usando dados de exemplo.

Manteremos a infraestrutura, as atualizações de software e os patches do Banco de Dados SQL do Azure. Você pode tratar o Banco de Dados SQL do Azure como trataria qualquer outra instalação do SQL Server. Por exemplo, você pode usar o Visual Studio, o SQL Server Management Studio, o Azure Data Studio ou outras ferramentas para gerenciar o Banco de Dados SQL do Azure.

A maneira de acessar o banco de dados e conectá-lo ao aplicativo fica a seu critério. Para ganhar experiência no trabalho com o banco de dados, aqui você vai se conectar a ele diretamente do portal, criar uma tabela e executar algumas operações CRUD básicas. Aqui, você aprenderá:

  • O que é o Cloud Shell e como acessá-lo do portal.
  • Como acessar informações sobre seu banco de dados da CLI do Azure, incluindo cadeias de conexão.
  • Como conectar-se ao seu banco de dados usando sqlcmd.
  • Como inicializar o banco de dados com uma tabela básica e alguns dados de exemplo.

O que é o Azure Cloud Shell?

Azure Cloud Shell é uma experiência de shell baseada em navegador para gerenciar e desenvolver recursos do Azure. Pense no Cloud Shell como um console interativo executado na nuvem.

Nos bastidores, o Cloud Shell é executado no Linux. Porém, dependendo da sua escolha de ambiente, Linux ou Windows, há duas experiências a escolher: Bash e PowerShell.

O Cloud Shell pode ser acessado de qualquer lugar. Além do portal, você também pode acessar o Cloud Shell do shell.azure.com, do aplicativo móvel do Azure ou do Visual Studio Code.

O Cloud Shell inclui ferramentas e editores de texto populares. Aqui está uma visão rápida dos utilitários az, jq e sqlcmd, que são as três ferramentas que você usará para este exercício.

  • az também é conhecido como a CLI do Azure. É a interface de linha de comando para trabalhar com recursos do Azure. Você usará esta interface para obter informações sobre seu banco de dados, incluindo a cadeia de conexão.
  • jq é um analisador JSON de linha de comando. Você direcionará a saída dos comandos az para essa ferramenta para extrair campos importantes da saída JSON.
  • sqlcmd permite que você execute instruções no SQL Server. Você usará sqlcmd para criar uma sessão interativa com o Banco de Dados SQL do Azure.

Obter informações sobre o Banco de Dados SQL do Azure

Antes de conectar-se ao banco de dados, é bom verificar se ele existe e está online.

Aqui, você usa o utilitário az para listar seus bancos de dados e mostrar algumas informações sobre o banco de dados de Logística, incluindo seu tamanho máximo e status.

  1. Os comandos az que você executará exigem o nome do grupo de recursos e o nome do servidor lógico do SQL do Azure. Execute o comando azure configure para especificá-los como valores padrão em vez de digitá-los.

    Substitua [server-name] pelo nome do servidor lógico do SQL do Azure que você criou e [resource-group] pelo grupo de recursos usado para o servidor.

    az configure --defaults group=[resource-group] sql-server=[server-name]
    

    Observação

    Dependendo do painel no portal, o nome do SQL Server pode ser exibido como um FQDN (por exemplo, servername.database.windows.net). No entanto, para este comando, você só precisa do nome lógico sem o sufixo .database.windows.net.

  2. Execute o comando az sql db list a seguir para listar todos os bancos de dados no servidor lógico do SQL do Azure:

    az sql db list
    

    Você vê um grande bloco de JSON como saída.

  3. Como queremos ver apenas os nomes de banco de dados, execute o comando uma segunda vez. Mas desta vez, direcione a saída para jq a fim de exibir somente os campos de nome.

    az sql db list | jq '[.[] | {name: .name}]'
    

    Você deverá obter esta saída:

    [
      {
        "name": "Logistics"
      },
      {
        "name": "master"
      }
    ]
    

    Logistics é o banco de dados. Como o SQL Server, o banco de dados do sistema master inclui os metadados do servidor, como as definições de configurações de entrada e do sistema.

  4. Execute o comando az sql db show a seguir para obter detalhes sobre o banco de dados Logistics:

    az sql db show --name Logistics
    

    Como antes, você vê um grande bloco de JSON como saída.

  5. Execute o comando uma segunda vez. Nesse momento, direcione a saída para jq para limitá-la somente ao nome, ao tamanho máximo e ao status do banco de dados de Logística.

    az sql db show --name Logistics | jq '{name: .name, maxSizeBytes: .maxSizeBytes, status: .status}'
    

    Você verá que o banco de dados está online e o valor máximo de volume que pode ser armazenado nele.

    {
      "name": "Logistics",
      "maxSizeBytes": 2147483648,
      "status": "Online"
    }
    

Conectar-se ao seu banco de dados

Agora que você entendeu um pouco sobre seu banco de dados, vamos nos conectar a ele usando sqlcmd, criar uma tabela que contém informações sobre drivers de transporte e executar algumas operações CRUD básicas.

Lembre-se de que CRUD significa criar, ler, atualizar e excluir. Esses termos se referem às operações executadas em dados de tabela, que são compostas por quatro operações básicas e necessárias para seu aplicativo. Agora é um bom momento para verificar se você pode executar cada uma delas.

  1. Execute o comando az sql db show-connection-string a seguir para obter a cadeia de conexão do banco de dados Logistics em um formato que o sqlcmd possa usar:

    az sql db show-connection-string --client sqlcmd --name Logistics
    

    A saída é parecida com o exemplo a seguir. Copie essa saída para usar na próxima etapa.

    "sqlcmd -S tcp:contoso-1.database.windows.net,1433 -d Logistics -U <username> -P <password> -N -l 30"
    
  2. Execute a instrução sqlcmd da saída da etapa anterior para criar uma sessão interativa. Remova as aspas e substitua <username> e <password> pelo nome de usuário e a senha que você especificou ao criar seu banco de dados. Aqui está um exemplo:

    sqlcmd -S tcp:contoso-1.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    Dica

    Coloque sua senha entre aspas para que “&” e outros caracteres especiais não sejam interpretados como instruções de processamento.

    Importante

    Poderá aparecer uma mensagem de erro semelhante ao exemplo a seguir:

    Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server:
    Cannot open server 'contoso' requested by the login.
    Client with IP address 'nnn.nnn.nnn.nnn' is not allowed to access the server.
    To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule
    on the master database to create a firewall rule for this IP address or address range.
    It may take up to five minutes for this change to take effect.
    

    Se esse erro acontecer, será necessário adicionar outra regra de firewall ao cliente. Para isso, execute as etapas a seguir:

    • Faça logon no Portal do Azure.

    • Na Home page do Azure, em Serviços do Azure, selecione Todos os recursos. O painel Todos os recursos será exibido.

    • Procure pelo seu banco de dados e selecione-o. O painel Logística do banco de dados SQL é exibido.

    • Na barra de menus superior, selecione Definir o firewall do servidor. O painel Rede é exibido.

    • Na seção Regras de firewall, selecione Adicionar uma regra de firewall. O painel Adicionar uma regra de firewall será exibido.

    • Especifique um Nome de regra exclusivo e depois insira o endereço IP da mensagem de erro para os campos IP inicial e IP final. Selecione OK.

    • Clique em Salvar.

    • Execute a instrução sqlcmd novamente para iniciar sua sessão interativa sqlcmd. Ela terá uma aparência semelhante ao exemplo a seguir:

    sqlcmd -S tcp:contoso-1.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    Agora que você iniciou sua sessão sqlcmd, os comandos restantes usam a linguagem Transact-SQL ou T-SQL.

    Dica

    Ao executar os comandos T-SQL nesse módulo, o GO na segunda linha pode não ser copiado para o prompt sqlcmd. Depois de inserir a primeira linha do comando, talvez seja necessário digitar o comando GO. O comando T-SQL não será executado sem ele, portanto, execute o comando GO.

  3. Na sessão sqlcmd, execute as seguintes instruções T-SQL para criar uma tabela chamada Drivers:

    CREATE TABLE Drivers (DriverID int, LastName varchar(255), FirstName varchar(255), OriginCity varchar(255));
    GO
    

    A tabela contém quatro colunas: um identificador exclusivo, o sobrenome e o nome do motorista e a cidade de origem do motorista.

  4. Execute as seguintes instruções T-SQL para verificar se a tabela Drivers existe:

    SELECT name FROM sys.tables;
    GO
    

    Você deverá obter esta saída:

    name
    --------------------------------------------------------------------------------------------------------------------------------
    Drivers
    
    (1 rows affected)
    
  5. Para testar a operação de criação, execute as instruções T-SQL a seguir para adicionar uma linha de exemplo à tabela:

    INSERT INTO Drivers (DriverID, LastName, FirstName, OriginCity) VALUES (123, 'Zirne', 'Laura', 'Springfield');
    GO
    

    Esta saída indica que a operação foi bem-sucedida:

    (1 rows affected)
    
  6. Para testar a operação de leitura, execute as seguintes instruções T-SQL para listar as colunas DriverID e OriginCity de todas as linhas na tabela:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    Será exibido um resultado com DriverID e OriginCity para a linha que você criou na etapa anterior.

    DriverID    OriginCity
    ----------- --------------------------
            123 Springfield
    
    (1 rows affected)
    
  7. Para testar a operação de atualização, execute as instruções T-SQL a seguir para alterar a cidade de origem de "Springfield" para "Boston" do motorista com uma DriverID igual a 123:

    UPDATE Drivers SET OriginCity='Boston' WHERE DriverID=123;
    GO
    
  8. Execute as seguintes instruções T-SQL para listar as colunas DriverID e OriginCity novamente:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    Agora, deverá obter a saída a seguir. Observe como OriginCity reflete a atualização para Boston.

    DriverID    OriginCity
    ----------- --------------------------
            123 Boston
    
    (1 rows affected)
    
  9. Por fim, teste a operação de exclusão executando as instruções T-SQL a seguir a fim de excluir o registro:

    DELETE FROM Drivers WHERE DriverID=123;
    GO
    
    (1 rows affected)
    
  10. Execute as seguintes instruções T-SQL para verificar se a tabela Drivers está vazia:

    SELECT COUNT(*) FROM Drivers;
    GO
    

    Veja que a tabela não contém nenhuma linha.

    -----------
              0
    
    (1 rows affected)
    

Agora que você tem uma ideia geral de como trabalhar com o banco de dados SQL do Azure usando o Cloud Shell, obtenha a cadeia de conexão da sua ferramenta favorita de gerenciamento de SQL, seja o SQL Server Management Studio, o Visual Studio ou outro programa.

Com o Cloud Shell, é mais fácil acessar e trabalhar com os recursos do Azure. Como o Cloud Shell é baseado no navegador, você pode acessá-lo usando o Windows, o macOS ou o Linux. Basicamente, qualquer sistema que tenha um navegador da Web.

Você ganhou experiência prática executando comandos da CLI do Azure para obter informações sobre seu Banco de Dados SQL do Azure. Como bônus, você praticou suas habilidades de T-SQL.

Na próxima unidade, concluiremos esse módulo e descreveremos como desativar seu banco de dados.