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

Gäller för:Azure SQL DatabaseAzure 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öljande krävs för att slutföra den här snabbstarten:


Viktigt!

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

Hämta serveranslutningsinformation

Hämta den anslutningsinformation som du behöver för att ansluta till databasen. Du behöver det fullständigt kvalificerade servernamnet eller värdnamnet, databasnamnet och inloggningsinformationen för de kommande stegen.

  1. Logga in på Azure-portalen.

  2. Gå till sidan SQL-databaser eller 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 Azure SQL Managed Instance eller SQL Server på en virtuell Azure-dator. Om du vill kopiera servernamnet eller värdnamnet hovrar du över det och markerar ikonen Kopiera.

Kommentar

Anslutningsinformation för SQL Server på en virtuell Azure-dator 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 mssql

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

  1. I din favorittextredigerare skapar du en ny fil, sqltest.js, i mappen där du skapade projektet (sqltest).

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

Kommentar

Mer information om hur du använder hanterad identitet för autentisering finns i självstudien för att komma åt data via hanterad identitet. Information om Tedious-konfigurationsalternativen för Microsoft Entra-ID (tidigare Azure Active Directory) finns i Tedious-dokumentationen.

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