Inicio rápido: Uso de Node.js para consultar una base de datos de Azure SQL Database o Instancia administrada de Azure SQL

Se aplica a:Azure SQL DatabaseAzure SQL Managed Instance

En este inicio rápido, se usa Node.js para conectarse a una base de datos y consultar los datos.

Requisitos previos

Para completar este inicio rápido necesita instalar:


Importante

Los scripts de este artículo se escriben para utilizar la base de datos AdventureWorks.

Obtención de información de conexión del servidor

Obtenga la información de conexión que necesita para conectarse a la base de datos. En los pasos siguientes, necesitará el nombre completo del servidor o nombre de host, el nombre de la base de datos y la información de inicio de sesión.

  1. Inicie sesión en Azure Portal.

  2. Vaya a las páginas SQL Databases o SQL Managed Instance.

  3. En la página Información general, revise el nombre completo del servidor junto a Nombre del servidor para una base de datos de Azure SQL Database o el nombre completo (o la dirección IP) del servidor junto a Host para una instancia administrada de Azure SQL o SQL Server en la máquina virtual de Azure. Para copiar el nombre del servidor o nombre de host, mantenga el cursor sobre él y seleccione el icono Copiar.

Nota:

Para obtener información de la conexión de SQL Server en una máquina virtual de Azure, consulte Conexión a SQL Server.

Creación del proyecto

Abra un símbolo del sistema y cree una carpeta denominada sqltest. Abra la carpeta que ha creado y ejecute el comando siguiente:

npm init -y
npm install mssql

Adición de código para consultar la base de datos

  1. En el editor de texto que prefiera, cree un nuevo archivo, sqltest.js, en la carpeta donde creó el proyecto (sqltest).

  2. Reemplace su contenido por el código siguiente. Agregue los valores apropiados para el servidor, la base de datos, el usuario y la contraseña.

    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 más información sobre el uso de una identidad administrada para la autenticación, complete Tutorial: Protección de la conexión con Azure SQL Database desde App Service mediante una identidad administrada. Los detalles sobre las opciones de configuración de Tedious para Microsoft Entra ID (anteriormente conocido como Azure Active Directory) están disponibles en la documentación de Tedious.

Ejecución del código

  1. En el símbolo del sistema, ejecute el programa.

    node sqltest.js
    
  2. Compruebe que se han devuelto las 20 primeras filas y cierre la ventana de la aplicación.

Pasos siguientes