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 모듈 분리는 유지보수에 필수
참고 링크
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 |