본문 바로가기

프로그래밍/Server

VS C++ 원격 DB Connection

 

머신 A와 B가 있다고 가정 할때

머신 A는 게임 서버

머신 B는 디비 서버

 

A에서 B로 원격 디비 커넥션을 하려고 하는데 삽질 겁나게 했다.

 

방법을 정리하겠음.

일단 OS와 MSSQL 버전은 별로 상관 없음

 

내 플랫폼과 사용툴은 Windows8 Pro Eng, MS SERVER 2012 이다.

ODBC를 설정하지 않고 FILEDSN으로 연결 한다.

 

 

 

 

 

첫번째

MS SERVER2012 를 시작 한다.

원격지에서 접속 할 타겟 DB를 생성 한다.

(***MS SERVER이 영문버전이라 한글은 모르겠음)

사용자를 등록해야 한다. Security 폴더에 Logins 에 우클릭 하여 New Login... 을 클릭 한다.

사용자 등록을 한 뒤 아래 그림과 같이 따라서 설정한다. (이미지가 작아서 잘 안보인다면.. 클릭하면 원본 크기로 보임)

 

 

 

 

 

 

 

 

 

두번째

port 설정을 해줘야 한다.

기본적으로 1433 port를 사용 한다.

SQL Server Configuration Manager 를 실행한다.

아래 그림과 같이 따라한다.

 

 

 

 

 

 

 

세번째

파일 DSN 내용

File Name : Auth.dsn

 

[ODBC]
DRIVER=SQL Server
UID=auth
Network=DBMSSOCN
DATABASE=auth
APP=Microsoft Data Access Components
SERVER=192.168.0.4

 

UID에는 Database Logins 에 등록된 User Name을 적어준다.

 

 

 

 

 

 

 

 

네번째

코드 일부분 발췌 하겠음.

 

bool Auth::Connect()
{
    string ConnectionStr("FILEDSN=.\\auth.dsn;");
    string Pwd("1234");
    ConnectionStr += string("PWD=") + Pwd;
    return m_ODBCCtrl.Connect( ConnectionStr );
}

bool NODBCCtrl::Connect( const string in_ConnectionStr )
{
	if(true == m_bConnect) return false;

	SQLRETURN ret = SQLAllocHandle(SQL_HANDLE_DBC,m_hEnv,&m_hDbc);
	if((SQL_SUCCESS != ret) && (SQL_SUCCESS_WITH_INFO != ret)) return false;	
	
	SQLCHAR CompleteConnectionString[1024] = "";
	ret = SQLDriverConnect(
		m_hDbc, //connection handle
		NULL,//window handle
		(SQLCHAR*)in_ConnectionStr.c_str(),
		SQL_NTS, //Null Terminate String
		CompleteConnectionString, 
		sizeof(CompleteConnectionString), 
		NULL, 
		SQL_DRIVER_NOPROMPT);
	if((ret != SQL_SUCCESS) && (ret != SQL_SUCCESS_WITH_INFO))
	{
		SQLFreeHandle(SQL_HANDLE_DBC, m_hDbc);		
		m_hDbc = SQL_NULL_HDBC;
		return false;	
	}

	m_bConnect = true;
	return true;
}

 

 

 

 

 

 

 

다섯번째

이렇게 다 했는데도 안된다면

방화벽 설정을 해야 한다.

http://z-man.tistory.com/163

 

 

 

그 외..

만약 클라쪽에서 ODBC를 사용 하고 싶다면..

http://xxbdxx.blog.me/10169745764  요기 봐도 좋을듯.. 정리 잘해놓은듯

 

 

'프로그래밍 > Server' 카테고리의 다른 글

Socket Modes - blocking / non-blocking  (0) 2016.07.07
윈도우 방화벽 새규칙 만들기 ( windows8 pro eng )  (0) 2013.06.24
sctp, dccp 프로토콜  (0) 2013.03.24
순차 패킷 소켓  (0) 2013.03.24
소켓 옵션  (0) 2013.03.24