빠른 시작: Node.js를 사용하여 Azure SQL Database 또는 Azure SQL Managed Instance의 데이터베이스 쿼리
적용 대상: Azure SQL Database Azure SQL Managed Instance
이 빠른 시작에서는 Node.js를 사용하여 데이터베이스에 연결하고 데이터를 쿼리합니다.
필수 구성 요소
이 빠른 시작을 완료하려면 다음이 필요합니다.
활성 구독이 있는 Azure 계정 및 Azure VM의 Azure SQL Database, Azure SQL Managed Instance 또는 SQL Server. 체험 계정을 만듭니다.
작업 SQL Database SQL Managed Instance Azure VM의 SQL Server 생성 포털 포털 포털 CLI Bicep PowerShell PowerShell PowerShell 구성 서버 수준 IP 방화벽 규칙 VM에서 연결 온-프레미스에서 연결 SQL Server 인스턴스에 연결 데이터 로드 빠른 시작당 로드된 Wide World Importers Wide World Importers 복원 Wide World Importers 복원 GitHub의 BACPAC 파일에서 Adventure Works 복원 또는 가져오기 GitHub의 BACPAC 파일에서 Adventure Works 복원 또는 가져오기 Node.js 관련 소프트웨어
Node.js를 설치한 다음 SQL Server용 Microsoft ODBC 드라이버 설치(macOS)의 단계를 사용하여 ODBC 드라이버를 설치합니다.
중요
이 문서의 스크립트는 AdventureWorks 데이터베이스를 사용하도록 작성되었습니다.
서버 연결 정보 가져오기
데이터베이스에 연결하는 데 필요한 연결 정보를 가져옵니다. 다음 단계를 수행하려면 정규화된 서버 이름이나 호스트 이름, 데이터베이스 이름 및 로그인 정보가 필요합니다.
Azure Portal에 로그인합니다.
SQL Databases 또는 SQL Managed Instances 페이지로 이동합니다.
개요 페이지에서 Azure SQL Database의 데이터베이스에 대한 서버 이름 옆에 있는 정규화된 서버 이름 또는 Azure VM의 Azure SQL Managed Instance 또는 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); } }
참고
관리 ID를 인증에 사용하는 방법에 대한 자세한 내용은 자습서를 완료하여 관리 ID를 통해 데이터에 액세스합니다. Microsoft Entra ID(이전의 Azure Active Directory)의 Tedious 구성 옵션에 대한 자세한 내용은 Tedious 설명서에서 확인할 수 있습니다.
코드 실행
명령 프롬프트에서 프로그램을 실행합니다.
node sqltest.js
상위 20개 행이 반환되는지 확인한 다음, 애플리케이션 창을 닫습니다.