Delen via


Quickstart: Node.js gebruiken om een query uit te voeren op een database in Azure SQL Database of Azure SQL Managed Instance

van toepassing op:Azure SQL DatabaseAzure SQL Managed Instance-

In deze quickstart gebruikt u Node.js om verbinding te maken met een database en gegevens op te vragen.

Vereiste voorwaarden

U hebt het volgende nodig om deze quickstart te voltooien:

Serververbindingsgegevens ophalen

Haal de verbindingsgegevens op die u nodig hebt om verbinding te maken met de database. Voor de komende stappen hebt u de volledig gekwalificeerde servernaam of hostnaam, databasenaam en aanmeldingsgegevens nodig.

  1. Meld u aan bij het Azure-portaal.

  2. Ga naar de pagina SQL Databases of SQL Managed Instances.

  3. Controleer op de pagina Overzicht de volledig gekwalificeerde servernaam naast servernaam voor een database in Azure SQL Database of de volledig gekwalificeerde servernaam (of het IP-adres) naast Host voor een Azure SQL Managed Instance of SQL Server op Azure VM. Als u de servernaam of hostnaam wilt kopiƫren, plaatst u de muisaanwijzer erop en selecteert u het pictogram Kopiƫren.

Opmerking

Zie Verbinding maken met SQL Server voor SQL Server op Azure VM voor verbindingsgegevens voor SQL Server.

Het project maken

Open een opdrachtprompt en maak een map met de naam sqltest. Open de map die u hebt gemaakt en voer de volgende opdracht uit:

npm init -y
npm install mssql

Code toevoegen om een query uit te voeren op de database

  1. Maak in uw favoriete teksteditor een nieuw bestand in sqltest.jsde map waarin u het project (sqltest) hebt gemaakt.

  2. Vervang de inhoud door de volgende code. Voeg vervolgens de juiste waarden toe voor uw server, database, gebruiker en wachtwoord.

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

Opmerking

Voltooi de zelfstudie voor toegang tot gegevens via een beheerde identiteit voor meer informatie over het gebruik van beheerde identiteiten voor verificatie. Details over de tedious-configuratieopties voor Microsoft Entra ID (voorheen Azure Active Directory) zijn beschikbaar in de Tedious-documentatie.

De code uitvoeren

  1. Voer het programma uit bij de opdrachtprompt.

    node sqltest.js
    
  2. Controleer of de bovenste 20 rijen worden geretourneerd en sluit het toepassingsvenster.