Dela via


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ör att slutföra den här snabbstarten behöver du:

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 Hanterad Azure SQL-instans eller SQL Server på en virtuell Azure-dator. Om du vill kopiera servernamnet eller värdnamnet hovra över det och välj ikonen Kopiera.

Anmärkning

Anslutningsinformation för SQL Server på en virtuell Azure-dator finns i Ansluta 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 innehållet med följande kod. Lägg sedan till lämpliga värden för din server, 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));
    
            // 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);
        }
    }
    

Anmärkning

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.