快速入门:使用 Node.js 查询 Azure SQL 数据库中的数据库或 Azure SQL 托管实例
适用于: Azure SQL 数据库 Azure SQL 托管实例
本快速入门将使用 Node.js 连接到数据库并查询数据。
先决条件
若要完成本快速入门,你需要:
一个具备有效订阅的 Azure 帐户,且该帐户还具有 Azure SQL 数据库、Azure SQL 托管实例或 Azure VM 上的 SQL Server 中的数据库。 免费创建帐户。
操作 SQL 数据库 SQL 托管实例 Azure VM 上的 SQL Server 创建 Portal Portal Portal 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,然后使用安装 Microsoft ODBC Driver for SQL Server (macOS) 中的步骤安装 ODBC 驱动程序。
重要
编写本文中的脚本是为了使用 AdventureWorks 数据库。
获取服务器连接信息
获取连接到数据库所需的连接信息。 在后续步骤中,将需要完全限定的服务器名称/主机名称、数据库名称和登录信息。
登录 Azure 门户。
转到“SQL 数据库”或“SQL 托管实例”页。
在“概述”页上,在“Server 名称”旁查看 Azure SQL 数据库中的数据库的完全限定服务器名称,或在“Host”旁边查看 Azure VM 上的 Azure SQL 托管实例或 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.chinacloudapi.cn', // 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 行,然后关闭应用程序窗口。