Share via


Guia de início rápido: use o Node.js para consultar um banco de dados no Banco de Dados SQL do Azure ou na Instância Gerenciada SQL do Azure

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

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

Pré-requisitos

Para concluir este guia de início rápido, necessita de:


Importante

Os scripts neste artigo são escritos para usar o 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 do servidor ou nome do host totalmente qualificado, nome do banco de dados e informações de login para as próximas etapas.

  1. Inicie sessão no portal do Azure.

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

  3. Na página Visão Geral, revise o nome do servidor totalmente qualificado ao lado de Nome do servidor para 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 uma Instância Gerenciada SQL do Azure ou SQL Server na VM do Azure. Para copiar o nome do servidor ou do host, passe o mouse sobre ele e selecione o ícone Copiar .

Nota

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

Criar o projeto

Abra uma linha de comandos e crie uma pasta com o nome sqltest. Abra a pasta que 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 novo arquivo, sqltest.js, na pasta onde você criou o projeto (sqltest).

  2. Substitua seu conteúdo pelo código a seguir. Em seguida, 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);
        }
    }
    

Nota

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 Ative 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 primeiras linhas são retornadas e feche a janela do aplicativo.

Próximos passos