快速入門:使用 Node.js 在 Azure SQL 資料庫或 Azure SQL 受控執行個體中,查詢資料庫

適用於:Azure SQL 資料庫Azure SQL 受控執行個體

在本快速入門中,您將使用 Node.js 連接到資料庫並查詢資料。

必要條件

若要完成本快速入門,您需要:


重要

本文中的指令碼撰寫為使用 Adventure Works 資料庫。

取得伺服器連線資訊

取得連線到資料庫所需的連線資訊。 在後續步驟中,您將需要完整的伺服器名稱或主機名稱、資料庫名稱和登入資訊。

  1. 登入 Azure 入口網站

  2. 前往 [SQL 資料庫] 或 [SQL 受控執行個體] 頁面。

  3. 在 [概觀] 頁面上,針對 Azure SQL 資料庫中的資料庫檢閱 [伺服器名稱] 旁的完整伺服器名稱,若為 Azure SQL 受控執行個體或 Azure VM 上的 SQL Server,則檢閱 [主機] 旁的完整伺服器名稱 (或 IP 位址)。 若要複製伺服器名稱或主機名稱,請將滑鼠暫留在其上方,然後選取 [複製] 圖示。

注意

如需 Azure VM 上 SQL Server 的連線資訊,請參閱連線到 SQL Server (英文)。

建立專案

開啟命令提示字元,並建立名為 sqltest 的資料夾。 開啟您建立的資料夾,然後執行下列命令:

npm init -y
npm install mssql

新增查詢資料庫的程式碼

  1. 使用您慣用的文字編輯器,在您建立專案 (sqltest) 的資料夾中,建立新的檔案 sqltest.js

  2. 以下列程式碼取代其內容。 然後,為您的伺服器、資料庫、使用者和密碼新增適當的值。

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

注意

如需使用受控識別進行驗證的詳細資訊,請完成教學課程以透過受控識別存取資料。 如需 Microsoft Entra ID (先前稱為 Azure Active Directory) 的 Tedious 設定選項詳細資料,請參閱 Tedious 說明文件

執行程式碼

  1. 在命令提示字元中,執行程式。

    node sqltest.js
    
  2. 請確認前 20 個資料列已傳回,然後關閉應用程式視窗。

後續步驟