Avvio rapido: usare Node.js per eseguire query su un database nel database SQL di Azure o nell'Istanza gestita di SQL di Azure

Si applica a:Database SQL di AzureIstanza gestita di SQL di Azure

In questa guida di avvio rapido si userà Node.js per connettersi a un database ed eseguire query sui dati.

Prerequisiti

Per completare l'esercitazione introduttiva, sono necessari gli elementi seguenti:


Importante

Gli script di questo articolo sono scritti in modo da usare il database AdventureWorks.

Recuperare le informazioni di connessione del server

Ottenere le informazioni di connessione necessarie per connettersi al database. Nelle procedure successive saranno necessari il nome completamente qualificato del server o il nome host, il nome del database e le informazioni di accesso.

  1. Accedere al portale di Azure.

  2. Passare alla pagina Database SQL o Istanze gestite di SQL.

  3. Nella pagina Panoramica verificare il nome completo del server accanto a Nome server per il database nel database SQL di Azure o il nome del server completo (o l'indirizzo IP) accanto a Host per un'istanza gestita di SQL di Azure o di SQL Server in una macchina virtuale di Azure. Per copiare il nome del server o il nome host, passare il puntatore su di esso e selezionare l'icona Copia.

Nota

Per le informazioni di connessione per SQL Server in una macchina virtuale di Azure, vedere Connettersi a SQL Server.

Creare il progetto

Aprire un prompt dei comandi e creare una cartella denominata sqltest. Aprire la cartella creata ed eseguire il comando seguente:

npm init -y
npm install mssql

Aggiungere il codice per eseguire query sul database

  1. Nell'editor di testo preferito creare il nuovo file sqltest.js nella cartella in cui è stato creato il progetto (sqltest).

  2. Sostituire il contenuto con il codice seguente. Aggiungere quindi i valori appropriati per il server, il database, l'utente e la password.

    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

Per altre informazioni sull'uso dell'identità gestita per l'autenticazione, completare l'esercitazione per l’accesso ai dati tramite identità gestita. I dettagli sulle opzioni di configurazione Tedious per Microsoft Entra ID (in precedenza Azure Active Directory) sono disponibili nella documentazione Tedious.

Eseguire il codice

  1. Al prompt dei comandi eseguire il programma.

    node sqltest.js
    
  2. Verificare che vengano restituite le prime 20 righe e chiudere la finestra dell'applicazione.

Passaggi successivi