빠른 시작: Node.js를 사용하여 Azure SQL Database 또는 Azure SQL Managed Instance의 데이터베이스 쿼리

적용 대상:Azure SQL DatabaseAzure SQL Managed Instance

이 빠른 시작에서는 Node.js를 사용하여 데이터베이스에 연결하고 데이터를 쿼리합니다.

필수 구성 요소

이 빠른 시작을 완료하려면 다음이 필요합니다.


중요

이 문서의 스크립트는 AdventureWorks 데이터베이스를 사용하도록 작성되었습니다.

서버 연결 정보 가져오기

데이터베이스에 연결하는 데 필요한 연결 정보를 가져옵니다. 다음 단계를 수행하려면 정규화된 서버 이름이나 호스트 이름, 데이터베이스 이름 및 로그인 정보가 필요합니다.

  1. Azure Portal에 로그인합니다.

  2. SQL Databases 또는 SQL Managed Instances 페이지로 이동합니다.

  3. 개요 페이지에서 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

데이터베이스를 쿼리하는 코드 추가

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

참고

관리 ID를 인증에 사용하는 방법에 대한 자세한 내용은 자습서를 완료하여 관리 ID를 통해 데이터에 액세스합니다. Microsoft Entra ID(이전의 Azure Active Directory)의 Tedious 구성 옵션에 대한 자세한 내용은 Tedious 설명서에서 확인할 수 있습니다.

코드 실행

  1. 명령 프롬프트에서 프로그램을 실행합니다.

    node sqltest.js
    
  2. 상위 20개 행이 반환되는지 확인한 다음, 애플리케이션 창을 닫습니다.

다음 단계