Démarrage rapide : Utiliser Node.js pour interroger une base de données dans Azure SQL Database ou Azure SQL Managed Instance

S’applique à : Azure SQL DatabaseAzure SQL Managed Instance

Dans ce guide de démarrage rapide, vous utilisez Node.js pour vous connecter à une base de données et interroger les données.

Prérequis

Pour effectuer ce démarrage rapide, les éléments suivants sont requis :


Important

Les scripts fournis dans cet article utilisent la base de données AdventureWorks.

Obtenir les informations de connexion du serveur

Obtenez les informations de connexion dont vous avez besoin pour vous connecter à la base de données. Pour les étapes suivantes, vous aurez besoin du nom complet du serveur ou de l’hôte, du nom de la base de données et des informations de connexion.

  1. Connectez-vous au portail Azure.

  2. Accédez à la page Bases de données SQL ou Instances managées SQL.

  3. Dans la page Vue d’ensemble, vérifiez le nom de serveur complet à côté de Nom de serveur pour une base de données dans Azure SQL Database, ou le nom de serveur complet (ou l’adresse IP) à côté de Hôte pour une instance managée Azure SQL ou un serveur SQL sur une machine virtuelle Azure. Pour copier le nom du serveur ou de l’hôte, pointez dessus et sélectionnez l’icône Copier.

Notes

Pour obtenir les informations de connexion de SQL Server sur une machine virtuelle Azure, consultez Se connecter à SQL Server.

Créer le projet

Ouvrez une invite de commandes et créez un dossier nommé sqltest. Ouvrez le dossier que vous avez créé et exécutez la commande suivante :

npm init -y
npm install mssql

Ajouter du code pour interroger la base de données

  1. Dans votre éditeur de texte favori, créez un fichier, sqltest.js, dans le dossier où vous avez créé le projet (sqltest).

  2. Remplacez son contenu par le code ci-dessous. Ensuite, ajoutez les valeurs appropriées pour vos serveur, base de données, utilisateur et mot de passe.

    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);
        }
    }
    

Notes

Pour plus d’informations sur l’utilisation d’une identité managée pour l’authentification, suivez le tutoriel sur l’accès aux données à l’aide d’une identité managée. Les détails des options de configuration de Tedious pour Microsoft Entra ID (anciennement Azure Active Directory) sont disponibles dans la documentation de Tedious.

Exécuter le code

  1. À l’invite de commande, exécutez ce programme.

    node sqltest.js
    
  2. Vérifiez que les 20 premières lignes ont été renvoyées et fermez la fenêtre d’application.

Étapes suivantes