快速入門:使用 Node.js 在 Azure SQL 資料庫或 Azure SQL 受控執行個體中,查詢資料庫
適用於:Azure SQL 資料庫 Azure SQL 受控執行個體
在本快速入門中,您將使用 Node.js 連接到資料庫並查詢資料。
必要條件
若要完成本快速入門,您需要:
Azure 帳戶,具有作用中的訂用帳戶、Azure SQL 資料庫中的資料庫、Azure SQL 受控執行個體或 Azure VM 上的 SQL Server。 免費建立帳戶。
動作 SQL Database SQL 受控執行個體 Azure VM 上的 SQL Server 建立 入口網站 入口網站 入口網站 CLI Bicep PowerShell PowerShell PowerShell 設定 伺服器層級 IP 防火牆規則 VM 的連線能力 來自內部部署的連線 連線到 SQL Server 執行個體 載入資料 每個快速入門載入的 Wide World Importers 還原 Wide World Importers 還原 Wide World Importers 從 GitHub 的 BACPAC 檔案還原或匯入 AdventureWorks 從 GitHub 的 BACPAC 檔案還原或匯入 AdventureWorks Node.js 相關軟體
安裝 Node.js,然後依照安裝適用於 SQL Server 的 Microsoft ODBC 驅動程式 (macOS) 上的步驟,安裝 ODBC 驅動程式。
重要
本文中的指令碼撰寫為使用 Adventure Works 資料庫。
取得伺服器連線資訊
取得連線到資料庫所需的連線資訊。 在後續步驟中,您將需要完整的伺服器名稱或主機名稱、資料庫名稱和登入資訊。
登入 Azure 入口網站。
前往 [SQL 資料庫] 或 [SQL 受控執行個體] 頁面。
在 [概觀] 頁面上,針對 Azure SQL 資料庫中的資料庫檢閱 [伺服器名稱] 旁的完整伺服器名稱,若為 Azure SQL 受控執行個體或 Azure VM 上的 SQL Server,則檢閱 [主機] 旁的完整伺服器名稱 (或 IP 位址)。 若要複製伺服器名稱或主機名稱,請將滑鼠暫留在其上方,然後選取 [複製] 圖示。
注意
如需 Azure VM 上 SQL Server 的連線資訊,請參閱連線到 SQL Server (英文)。
建立專案
開啟命令提示字元,並建立名為 sqltest 的資料夾。 開啟您建立的資料夾,然後執行下列命令:
npm init -y
npm install mssql
新增查詢資料庫的程式碼
使用您慣用的文字編輯器,在您建立專案 (sqltest) 的資料夾中,建立新的檔案 sqltest.js。
以下列程式碼取代其內容。 然後,為您的伺服器、資料庫、使用者和密碼新增適當的值。
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 說明文件。
執行程式碼
在命令提示字元中,執行程式。
node sqltest.js
請確認前 20 個資料列已傳回,然後關閉應用程式視窗。