Microsoft SQL Server 2014 와 Node.js 연결
Microsoft SQL Server 준비
1. Microsoft SQL Server 2014 다운로드
Microsoft SQL Server 2017 버전부터 x86 지원이 안되므로 2014 버전을 설치하게 되었다.
SQL Server 2014 버전은 다음 홈페이지에서 다운로드가 가능하다.
https://www.microsoft.com/ko-kr/download/details.aspx?id=42299
다운로드 버튼을 클릭하면 여러개의 목록이 표시된다.
이중 x86_KOR을 선택하여 설치한다.
이번에 설치를 위해 선택한 파일이다. express Server와 관리툴이 포함되어 있다.
ExpressAndTools 32BIT\SQLEXPRWT_x86_KOR.exe
|
2. Microsoft SQL Server 2014 설치방법
설치 진행은 SQL Server Installer에 의해 진행된다.
새로운 서버 설치하기를 선택하면 SQL Server 설치가 시작된다.
모든 설치는 기본 지정된 내용으로 진행한다.
인스턴트 구성에서 기본 인스턴스는 SQLEXPRESS로 지정된다.
기본 인스턴스는 테스트를 위해 변경하지 않는다.
서버 구성에서는 데이터 정렬 탭에서 언어 구성을 변경할 수 있다. 한국어로 설치하는 경우 Korean_Wansung_CI_AS가 선택되어 있다.
데이터베이스 엔진 구성에서 "인증모드"는 혼합 모드(SQL Server 인증 및 Windows 인증"으로 변경한다.
sa (기본 Administrator ID)의 암호를 지정한다.
그리고 새로운 SQL Server 관리자를 추가할 수도 있다. 나중에 추가도 가능한다.
데이터 디렉터리 탭에서 데이터 파일 등의 위치를 지정할 수 있다.
설치를 완료한다. 시작프로그램에 Microsoft SQL Server 2014, 2008이 설치된것을 확인할 수 있다. 2008파일은 2014에 종속되어 설치된 것으로 보인다. (자세한 이유는 모름)
3. SQL Server 구성 및 리모트 연결을 위한 네트워크 설정
SQL Server 2014 구성 관리자를 실행한다.
좌측 목록 중 "SQL Server 네트워크 구성" 을 선택한다.
하위의 "SQLEXPRESS에 대한 프로토콜"을 선택한다.
우측의 TCP/IP 항목을 더블 클릭하여 속성을 팝업한다.
TCP/IP 사용여부를 사용으로 변경한다.
옆의 IP 주소 탭을 선택한다. IPAll에서 TCP포트를 1433으로 지정한다.
네트워크 구성 변경 후 서버를 재기동한다.
외부 네트워크에서 접속이 필요하면 방화벽 설정을 해야한다. 로컬에서 접속하기 떄문에 이 부분은 넘어가도록 한다.
4. 사용자 생성 및 새로운 데이터베이스 추가
SQL Server 2014 Management Studio를 실행한다.
로그인 창에서 윈도우 인증 혹은 SQL Server 인증을 선택한 후 sa 아이디와 지정했던 암호를 입력한 후 데이터베이스로 접속한다.
사용자 생성은 좌측의 보안 항목 중 로그인 아이콘에서 마우스 오른쪽 버튼을 클릭한 후 "새 로그인"을 생성한다.
데이터베이스의 추가는 좌측의 데이터베이스 항목 아이콘에서 마우스 오른쪽 버튼을 클릭한 후 "새 데이터베이스"로 생성한다.
사용자 생성 시 기본 데이터베이스를 지정하기 위해서는 먼저 데이터베이스를 만들고 사용자를 생성하는 것이 좋다.
사용자의 권한은 사용자 정보에서 "사용자 매핑"을 통해 지정한다.
5. SQL Serve CLI
Command line Interface로 제공되는 도구는 sqlcmd 명령이다. sqlcmd를 통해 cmd 창에서 MS SQL Server에 접속하는 것을 테스트 한다.
- C:\Users\jungwonkun7>sqlcmd -U 사용자ID -P 암호 -S localhost -d mydb01
- 1> select * from student;
- 2> go
- name age id
- ---------- ---------- ----------
- (0개 행 적용됨)
Node Microsoft SQL Server 모듈 설치
1. Tedious 모듈 설치
Tedious는 Microsoft가 공식적으로 지원하는 Node 모듈로 SQL Server와 연결을 지원한다. mssql 모듈도 있지만 사용빈도는 Tedious보다 낮고 기능도 부족하므로 Tedious를 사용하여 SQL Server와 연결한다.
Tedious는 보안과 관련한 사항이 계속 변경되어 있으므로 다른 인터넷에 돌아다니는 예제를 참고하기 보다는 github에서 제공하는 예제를 사용하여 구현을 진행한다.
심지어 Getting Started에 연결되어 있는 Microsoft 의 예제를 따라하면 일부 명령어는 deprecated 되었다는 메시지가 표시된다. 하지만 기본적인 기능을 이해하기 위해서 Microsoft 사이트의 내용을 참고하도록 한다.
https://www.microsoft.com/en-us/sql-server/developer-get-started/node/windows/
(Node.js + Widnows Getting Started)
최신 예제 및 사용방법은 다음 사이트를 참조한다.
https://github.com/tediousjs/tedious (Tedious Github)
2. Tedious 설치 및 실행 결과
Node에 Tedious 설치 후 맨 처음 실행할 예제는 다음 항목이다.
https://github.com/tediousjs/tedious/blob/master/examples/minimal.js
- var Connection = require('tedious').Connection;
- var config = {
- server: "localhost",
- // If you're on Windows Azure, you will need this:
- options: {encrypt: false},
- authentication: {
- type: "default",
- options: {
- userName: "stormboy",
- password: "dnjsrms",
- }
- }
- /*
- ,options: {
- debug: {
- packet: true,
- data: true,
- payload: true,
- token: false,
- log: true
- },
- database: 'DBName',
- encrypt: true // for Azure users
- }
- */
- };
- var connection = new Connection(config);
- connection.on('connect', function(err) {
- // If no error, then good to go...
- console.log('Connected...');
- executeStatement();
- }
- );
- connection.on('debug', function(text) {
- //console.log(text);
- }
- );
- var Request = require('tedious').Request;
- function executeStatement() {
- request = new Request("select 42, 'hello world'", function(err, rowCount) {
- if (err) {
- console.log(err);
- } else {
- console.log(rowCount + ' rows');
- }
- });
- request.on('row', function(columns) {
- columns.forEach(function(column) {
- console.log(column.value);
- });
- });
- request.on('done', function(rowCount, more) {
- console.log(rowCount + ' rows returned');
- });
- connection.execSql(request);
- }
실행 결과는 다음과 같다.
- PS C:\ubuntu\node\oauth2svr\mssql> node mssql2
- Connected...
- 42
- hello world
- 1 rows
[참고 사이트]
https://www.dsun.kr/37 (SQL Server 2014 설치)
https://server-talk.tistory.com/248 (데이터베이스 생성, 새 로그인 사용자)
https://docs.microsoft.com/ko-kr/sql/tools/sqlcmd-utility?view=sql-server-2017 (SQLcmd 사용가이드)