Início Rápido: Usar o Node.js para consultar um banco de dados no Banco de Dados SQL do Azure ou na Instância Gerenciada de SQL do Azure

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Neste guia de início rápido, você usará o Node.js para se conectar a um banco de dados e consultar os dados.

Pré-requisitos

Para concluir este início rápido, você precisa de:


Importante

Os scripts deste artigo foram escritos para uso do banco de dados AdventureWorks.

Obter informações de conexão do servidor

Obtenha as informações de conexão necessárias para se conectar ao banco de dados. Você precisará do nome totalmente qualificado do servidor ou do host, do nome do banco de dados e das informações de logon nas próximas etapas.

  1. Entre no portal do Azure.

  2. Acesse a página Bancos de Dados SQL ou Instâncias Gerenciadas de SQL.

  3. Na página Visão geral, examine o nome do servidor totalmente qualificado ao lado de Nome do servidor para obter um banco de dados no Banco de Dados SQL do Azure ou o nome do servidor totalmente qualificado (ou endereço IP) ao lado de Host para obter uma instância gerenciada de SQL do Azure ou um SQL Server na VM do Azure. Para copiar o nome do servidor ou o nome do host, passe o mouse sobre ele e selecione o ícone Copiar.

Observação

Para obter informações de conexão do SQL Server na VM do Azure, confira Conectar-se ao SQL Server.

Criar o projeto

Abra um prompt de comando e crie uma pasta chamada sqltest. Abra a pasta que você criou e execute o seguinte comando:

npm init -y
npm install mssql

Adicionar código para consultar o banco de dados

  1. No seu editor de texto favorito, crie um arquivo, sqltest.js, na pasta em que criou o projeto (sqltest).

  2. Substitua o conteúdo pelo código a seguir. Depois adicione os valores apropriados para seu servidor, banco de dados, usuário e senha.

    const sql = require('mssql');
    
    const config = {
        user: 'username', // better stored in an app setting such as process.env.DB_USER
        password: 'password', // better stored in an app setting such as process.env.DB_PASSWORD
        server: 'your_server.database.windows.net', // better stored in an app setting such as process.env.DB_SERVER
        port: 1433, // optional, defaults to 1433, better stored in an app setting such as process.env.DB_PORT
        database: 'AdventureWorksLT', // better stored in an app setting such as process.env.DB_NAME
        authentication: {
            type: 'default'
        },
        options: {
            encrypt: true
        }
    }
    
    /*
        //Use Azure VM Managed Identity to connect to the SQL database
        const config = {
            server: process.env["db_server"],
            port: process.env["db_port"],
            database: process.env["db_database"],
            authentication: {
                type: 'azure-active-directory-msi-vm'
            },
            options: {
                encrypt: true
            }
        }
    
        //Use Azure App Service Managed Identity to connect to the SQL database
        const config = {
            server: process.env["db_server"],
            port: process.env["db_port"],
            database: process.env["db_database"],
            authentication: {
                type: 'azure-active-directory-msi-app-service'
            },
            options: {
                encrypt: true
            }
        }
    */
    
    console.log("Starting...");
    connectAndQuery();
    
    async function connectAndQuery() {
        try {
            var poolConnection = await sql.connect(config);
    
            console.log("Reading rows from the Table...");
            var resultSet = await poolConnection.request().query(`SELECT TOP 20 pc.Name as CategoryName,
                p.name as ProductName 
                FROM [SalesLT].[ProductCategory] pc
                JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid`);
    
            console.log(`${resultSet.recordset.length} rows returned.`);
    
            // output column headers
            var columns = "";
            for (var column in resultSet.recordset.columns) {
                columns += column + ", ";
            }
            console.log("%s\t", columns.substring(0, columns.length - 2));
    
            // ouput row contents from default record set
            resultSet.recordset.forEach(row => {
                console.log("%s\t%s", row.CategoryName, row.ProductName);
            });
    
            // close connection only when we're certain application is finished
            poolConnection.close();
        } catch (err) {
            console.error(err.message);
        }
    }
    

Observação

Para obter mais informações sobre como usar a identidade gerenciada para autenticação, conclua o tutorial para acessar dados por meio da identidade gerenciada. Detalhes sobre as opções de configuração Tedious para o Microsoft Entra ID (anteriormente Azure Active Directory) estão disponíveis na documentação do Tedious.

Executar o código

  1. No prompt de comando, execute o programa.

    node sqltest.js
    
  2. Verifique se as 20 linhas superiores são retornadas, depois feche a janela do aplicativo.

Próximas etapas