Snabbstart: Använd Node.js för att köra frågor mot en databas i Azure SQL Database eller Azure SQL Managed Instance

GÄLLER FÖR: Azure SQL Database Azure SQL Managed Instance

I den här snabbstarten använder du Node.js för att ansluta till en databas och fråga efter data.

Förutsättningar

För att slutföra den här snabbstarten behöver du:


Viktigt

Skripten i den här artikeln skrivs för att använda Adventure Works-databasen.

Anteckning

Du kan välja att använda en Azure SQL Managed Instance.

Om du vill skapa och konfigurera använder du Azure Portal, PowerShelleller CLIoch konfigurerar sedan lokal anslutning eller VM-anslutning.

Information om hur du läser in data finns i Återställa med BACPAC med Adventure Works-filen eller se återställa Wide World Importers-databasen.

Hämta information om serveranslutning

Hämta anslutningsinformationen som du behöver för att ansluta till databasen i Azure SQL Database. Du behöver det fullständiga servernamnet eller värdnamnet, databasnamnet och inloggningsinformationen för de kommande procedurerna.

  1. Logga in på Azure-portalen.

  2. Gå till sidan SQL Databaser SQL hanterade instanser.

  3. På sidan Översikt granskar du det fullständigt kvalificerade servernamnet bredvid Servernamn för en databas i Azure SQL Database eller det fullständigt kvalificerade servernamnet (eller IP-adressen) bredvid Värd för en Hanterad Azure SQL-instans eller SQL Server på en virtuell Azure-dator. Om du vill kopiera servernamnet eller värdnamnet hovrar du över det och väljer ikonen Kopiera.

Anteckning

Anslutningsinformation för virtuella datorer SQL Server Virtuella Azure-datorer finns i Anslut till SQL Server.

Skapa projektet

Öppna en kommandotolk och skapa en mapp med namnet sqltest. Öppna mappen som du skapade och kör följande kommando:

npm init -y
npm install tedious

Lägga till kod för att fråga databasen

  1. Skapa en ny fil, sqltest.js, i valfri textredigerare.

  2. Ersätt dess innehåll med följande kod. Lägg sedan till lämpliga värden för servern, databas, användare och lösenord.

    const { Connection, Request } = require("tedious");
    
    // Create connection to database
    const config = {
      authentication: {
        options: {
          userName: "username", // update me
          password: "password" // update me
        },
        type: "default"
      },
      server: "your_server.database.windows.net", // update me
      options: {
        database: "your_database", //update me
        encrypt: true
      }
    };
    
    /* 
        //Use Azure VM Managed Identity to connect to the SQL database
        const config = {
            server: process.env["db_server"],
            authentication: {
                type: 'azure-active-directory-msi-vm',
            },
            options: {
                database: process.env["db_database"],
                encrypt: true,
                port: 1433
            }
        };
    
        //Use Azure App Service Managed Identity to connect to the SQL database
        const config = {
            server: process.env["db_server"],
            authentication: {
                type: 'azure-active-directory-msi-app-service',
            },
            options: {
                database: process.env["db_database"],
                encrypt: true,
                port: 1433
            }
        });
    
    */
    
    const connection = new Connection(config);
    
    // Attempt to connect and execute queries if connection goes through
    connection.on("connect", err => {
      if (err) {
        console.error(err.message);
      } else {
        queryDatabase();
      }
    });
    
    connection.connect();
    
    function queryDatabase() {
      console.log("Reading rows from the Table...");
    
      // Read all rows from table
      const request = new Request(
        `SELECT TOP 20 pc.Name as CategoryName,
                       p.name as ProductName
         FROM [SalesLT].[ProductCategory] pc
         JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid`,
        (err, rowCount) => {
          if (err) {
            console.error(err.message);
          } else {
            console.log(`${rowCount} row(s) returned`);
          }
        }
      );
    
      request.on("row", columns => {
        columns.forEach(column => {
          console.log("%s\t%s", column.metadata.colName, column.value);
        });
      });
    
      connection.execSql(request);
    }
    

Anteckning

Om du vill ha mer information om hur du använder hanterad identitet för autentisering slutför du självstudien för att komma åt data via hanterad identitet.

Anteckning

Kodexe exemplet använder exempeldatabasen AdventureWorksLT i Azure SQL Database.

Kör koden

  1. Kör programmet i kommandotolken.

    node sqltest.js
    
  2. Kontrollera att de 20 översta raderna returneras och stäng programfönstret.

Nästa steg