[Node.js] Node.js에서 MSSQL 데이터베이스 연결하기

2025. 6. 20. 17:19·Node.js
728x90
반응형
SMALL

실무에서도 바로 사용할 수 있는 MSSQL + Node.js 연동 예제 


1. 라이브러리 설치

Node.js에서 MSSQL과 통신하려면 mssql 패키지를 사용합니다.

npm install mssql

TypeScript 사용자는 타입 패키지도 함께 설치해주세요:

npm install --save-dev @types/mssql

2. 환경변수(.env) 설정

DB 접속 정보를 코드에 하드코딩하지 않고 .env 파일에 안전하게 보관합니다.

# .env 파일
DB_USER=your_db_user
DB_PASSWORD=your_password
DB_SERVER=your_server_address
DB_PORT=1433
DB_DATABASE=your_database_name

 

보안을 위해 .env는 반드시 .gitignore에 포함하세요.


3. MSSQL 설정(config) 및 연결 Pool 구성

// src/config/mssqlConfig.ts
import sql from 'mssql';
import dotenv from 'dotenv';

dotenv.config();

const dbConfig: sql.config = {
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  server: process.env.DB_SERVER!,
  port: parseInt(process.env.DB_PORT || '1433', 10),
  database: process.env.DB_DATABASE,
  options: {
    encrypt: true,               // Azure 사용 시 true
    trustServerCertificate: true // 로컬 테스트 시 true, 배포 시 false
  },
};

export const pool = new sql.ConnectionPool(dbConfig);
export const poolConnect = pool.connect();

pool 객체는 연결이 재사용되도록 구성된 ConnectionPool이며, 실제 사용 전에 .connect()로 초기 연결을 설정해야 합니다.


 4. DB 연결 테스트 코드

// test/dbTest.ts
import { poolConnect, pool } from '../src/config/mssqlConfig';

export async function testDbConnection() {
  try {
    await poolConnect;

    const result = await pool
      .request()
      .query('SELECT TOP 1 * FROM dbo.COMPANY_INFO');

    console.log(' DB 연결 성공');
    console.log(result.recordset);

    return result.recordset[0];
  } catch (error) {
    console.error('DB 연결 실패:', error);
    throw error;
  }
}

TOP 1 쿼리는 미리 작성된 테이블에서 한 줄만 조회하여 연결 여부를 확인하는 데 사용합니다.


5. MSSQL 쿼리 사용하는 방법

간단한 SELECT

const result = await pool
  .request()
  .input('companyKey', sql.VarChar, 'COSCO')
  .query('SELECT * FROM dbo.SHIP_INFO WHERE company_key = @companyKey');

트랜잭션 예제

const transaction = new sql.Transaction(pool);
await transaction.begin();

try {
  const request = new sql.Request(transaction);
  await request.query(`UPDATE dbo.USERS SET name = '홍길동' WHERE id = 1`);
  await transaction.commit();
  console.log('트랜잭션 커밋 완료');
} catch (err) {
  await transaction.rollback();
  console.error('트랜잭션 롤백:', err);
}

 6. 실전 팁

항목 추천값  설명
암호화(encrypt) Azure 사용 시 true, 로컬은 false도 가능
trustServerCertificate 보안 인증서가 없을 경우 true
포트 번호 기본값은 1433
에러 로그 try-catch 필수
 

마무리

  • mssql 라이브러리는 Promise 기반으로 비동기 처리가 쉬움
  • 트랜잭션, input 바인딩, 프로시저 호출 등 고급 기능도 지원
  • .env 파일과 config 모듈 분리는 유지보수에 필수

 참고 링크

  • mssql 공식 문서 (GitHub)
  • MS SQL Server 설치 가이드
 

SQL Server 기술 설명서 - SQL Server

관심 있는 SQL Server 영역을 선택합니다.

learn.microsoft.com

 

 

GitHub - tediousjs/node-mssql: Microsoft SQL Server client for Node.js

Microsoft SQL Server client for Node.js. Contribute to tediousjs/node-mssql development by creating an account on GitHub.

github.com

 

728x90
반응형
LIST

'Node.js' 카테고리의 다른 글

[Node.js] Node.js에서 스케줄링 구현: node-cron vs node-schedule  (1) 2025.07.02
[Node.js] 서버 환경 분리  (0) 2025.07.02
[Node.js] 실시간 진행 상황을 사용자에게 보여주기 – SSE(Server-Sent Events) 적용기  (0) 2025.06.16
[Node.js] 미들웨어란?  (0) 2025.05.28
[Node.js] Node.js Express 기본 및 주요 모듈 정리  (0) 2025.05.20
'Node.js' 카테고리의 다른 글
  • [Node.js] Node.js에서 스케줄링 구현: node-cron vs node-schedule
  • [Node.js] 서버 환경 분리
  • [Node.js] 실시간 진행 상황을 사용자에게 보여주기 – SSE(Server-Sent Events) 적용기
  • [Node.js] 미들웨어란?
junhyeokkk
junhyeokkk
나의 개발자 성장기
  • junhyeokkk
    백엔드 개발자 준혁의 성장일지
    junhyeokkk
  • 전체
    오늘
    어제
    • 분류 전체보기 (59) N
      • Flutter (13)
      • 개발환경구축 (3)
      • HTTP (0)
      • CS지식 (5)
      • 코딩테스트 (10)
      • JAVA (7)
      • 데이터베이스 (7)
      • Node.js (9)
      • TypeScript (1) N
      • Azure (3)
      • Git (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    nodejs
    sql튜토리얼
    cosmos db
    db
    node
    CS지식
    백엔드
    node.js
    자바
    Typescript
    azure
    알고리즘
    programmers
    디자인패턴
    백엔드개발
    Microsoft
    MSsql
    데이터베이스
    마이크로소프트sql
    Java
    라이브러리
    개발자
    js
    프로그래머스
    Flutter
    개발자준비
    RDBMS
    백엔드개발자
    DART
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
junhyeokkk
[Node.js] Node.js에서 MSSQL 데이터베이스 연결하기
상단으로

티스토리툴바