Rychlý start: Použití Node.js k dotazování databáze ve službě Azure SQL Database nebo Azure SQL Managed Instance

Platí pro: Azure SQL Database Azure SQL Managed Instance

V tomto rychlém startu použijete Node.js pro připojení k databázi a dotazování dat.

Požadavky

K dokončení tohoto rychlého startu je potřeba:


Důležité

Skripty v tomto článku se zapisují tak, aby používaly databázi AdventureWorks .

Získání informací o připojení k serveru

Získejte informace o připojení, které potřebujete pro připojení k databázi. Pro nadcházející kroky budete potřebovat plně kvalifikovaný název serveru nebo název hostitele, název databáze a přihlašovací údaje.

  1. Přihlaste se k portálu Azure.

  2. Přejděte na stránku SQL Database nebo SQL Managed Instances .

  3. Na stránce Přehled zkontrolujte plně kvalifikovaný název serveru vedle názvu serveru pro databázi ve službě Azure SQL Database nebo plně kvalifikovaný název serveru (nebo IP adresu) vedle hostitele pro službu Azure SQL Managed Instance nebo SQL Server na virtuálním počítači Azure. Pokud chcete zkopírovat název serveru nebo název hostitele, najeďte myší na něj a vyberte ikonu Kopírovat .

Poznámka:

Informace o připojení k SQL Serveru na virtuálním počítači Azure najdete v tématu Připojení k SQL Serveru.

Vytvoření projektu

Otevřete příkazový řádek a vytvořte složku sqltest. Otevřete složku, kterou jste vytvořili, a spusťte následující příkaz:

npm init -y
npm install mssql

Přidání kódu pro dotazování databáze

  1. Ve svém oblíbeném textovém editoru vytvořte nový soubor sqltest.js ve složce, ve které jste vytvořili projekt (sqltest).

  2. Nahraďte jeho obsah následujícím kódem. Pak přidejte příslušné hodnoty pro server, databázi, uživatele a heslo.

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

Poznámka:

Další informace o použití spravované identity pro ověřování najdete v kurzu pro přístup k datům prostřednictvím spravované identity. Podrobnosti o možnostech konfigurace Tedious pro Microsoft Entra ID (dříve Azure Active Directory) jsou k dispozici v dokumentaci Tedious.

Spuštění kódu

  1. Na příkazovém řádku spusťte program.

    node sqltest.js
    
  2. Ověřte, že se vrátí prvních 20 řádků, a zavřete okno aplikace.

Další kroky