Node.js에서 MSSQL(Tedious) 사용 중 ConnectionError: Failed to connect to localhost:1433 - connect ECONNREFUSED 오류가 발생할 때 주요 원인과 해결 방법을 아래에 정리합니다:
주요 원인
- SQL Server의 TCP/IP가 비활성화됨
- SQL Server는 기본적으로 TCP/IP 프로토콜이 비활성화되어 있을 수 있습니다.
- 1433 포트가 열려 있지 않음 또는 잘못 설정됨
- MSSQL은 기본적으로 1433 포트를 사용하며, 해당 포트가 열려 있지 않거나 방화벽에서 차단된 경우 연결이 거부될 수 있습니다.
- SQL Server 인스턴스 이름 사용 시 "SQL Server Browser" 서비스 미실행
- 인스턴스 이름으로 연결하려면 SQL Server Browser 서비스가 실행 중이어야 하며, UDP 포트 1434도 접근 가능해야 합니다.
- 서버 주소 문제
- 'localhost' 대신 실제 IP 또는 컴퓨터 이름을 사용해야 연결이 되는 경우도 있습니다.
- 암호화 옵션 및 광고 인증 방식 문제
- 오래된 SQL 서버나 Node 버전에서는 암호화(encrypt) 옵션에 따라 연결이 안 되는 경우가 있음.
해결 방법
1. TCP/IP 활성화
- SQL Server Configuration Manager 실행
- "SQL Server Network Configuration" → "Protocols for MSSQLSERVER"
- "TCP/IP"를 **Enabled(활성화)**로 설정
- 적용 후 SQL Server 서비스 재시작
2. TCP 포트 설정
- Configuration Manager > 프로토콜 > TCP/IP의 'IPAll' 항목
- "TCP Dynamic Ports" = 비워둠(BLANK)
- "TCP Port" = 1433 설정
- 방화벽에서도 1433 포트가 허용되어야 함
3. SQL Server Browser 활성화
- 인스턴스 이름으로 연결 시: SQL Server Browser 서비스 실행
- UDP 1434 포트 오픈 필요
4. 서버 주소 및 인증 정보 점검
- connection config에서 IP 주소나 컴퓨터 이름으로 테스트
- 사용자명, 비밀번호, 데이터베이스명, 포트 등 JSON 형태로 정확히 기입
const config = {
user: 'sa',
password: '비밀번호',
server: '127.0.0.1', // 또는 컴퓨터 이름
database: 'SampleDB',
options: {
encrypt: true // 필요에 따라 false
}
};
5. 암호화 및 Node 버전 호환
- 최신 Node(v12+)에서 TLS 1.2 문제 시, encrypt 옵션 확인, 필요시 options.encrypt: false
- 또는 node 실행 시 --tls-min-v1.0 플래그로 구버전 TLS 허용
6. 연결 테스트 및 권한 검증
- SSMS(SQL Server Management Studio)에서 같은 정보로 연결 가능한지 테스트
- SQL Server 인증(SQL Server Authentication) 사용 권장
참고 요약표
주요 원인접근 방법비고
| TCP/IP 비활성화 | Configuration Manager | TCP/IP → Enabled, 서비스 재시작 |
| 포트 미설정/차단 | IPAll → TCP Port=1433 | 방화벽 허용 필요 |
| 브라우저 서비스 미실행 | 서비스 실행, UDP 1434 | 인스턴스 이름 연결 시 필요 |
| 주소/인증 정보 문제 | IP/컴퓨터명, config 점검 | SSMS에서도 가능한지 확인 |
| 암호화/호환성 문제 | encrypt 옵션, Node 플래그 | 구버전 MSSQL, 최신 Node 사용시(TLS) |
이 방법들을 순서대로 점검하면 대부분의 ECONNREFUSED 연결 오류를 해결할 수 있습니다.
'데이터베이스' 카테고리의 다른 글
| Express 4에서 MSSQL Pool을 사용하는법 (1) | 2025.09.05 |
|---|