인프런 커뮤니티 질문&답변

Se Mo님의 프로필 이미지
Se Mo

작성한 질문수

장래쌤과 함께하는 쉽고 재미있는 SQL Server 운영 이야기(기본편)

SQL Server 다운로드와 설치를 위한 사전 준비

데이터베이스 접속 관련

해결된 질문

작성

·

485

·

수정됨

1

이전 작업자가 남긴 DB백업 파일을 SSMS로 복원하였습니다.

복원된 DB에 C++로 접속을 하고 싶은데 C++로 접속하기 위한 Address를 어디서 확인할 수 있을까요?

 


Provider=SQLOLEDB

Initial Catalog=서버이름(디비명)

Data Source=서버IP

User ID=접속ID

Password=접속비번


 

위에 입력될 IP주소를 알고 싶습니다.

 

답변 2

1

Se Mo님의 프로필 이미지
Se Mo
질문자

먼저 답변에 감사드립니다.

 

말씀해주신 대로 초기 설정값으로 접속을 시도해 보았습니다.

OpenFromInitializationString()

해당 함수를 사용하였고


Provider=SQLOLEDB.1

User ID

Password

persist security info = true

Initial Catalog

Data Source


위에 정보를 기존대로 입력하였습니다.

 

입력하였을때 함수의 결과 값이

[E_FAIL]로 반환되었습니다.

 

IP주소를 변경하였을때는 오류코드는

[DB_SEC_E_AUTH_FAILED]를 반환하였습니다.

 

저는 문제로 생각했던 것이 기존에 사용하던 컴퓨터를 폐기하여 해당 Address는 소멸되었다고 생각했습니다. 그래서 새롭게 SQL Server를 만들면서 IP를 새로 부여해야 될 걸로 판단하였습니다.

장래쌤님의 프로필 이미지
장래쌤
지식공유자

"저는 문제로 생각했던 것이 기존에 사용하던 컴퓨터를 폐기하여 해당 Address는 소멸되었다고 생각했습니다. 그래서 새롭게 SQL Server를 만들면서 IP를 새로 부여해야 될 걸로 판단하였습니다."라고 하셨는데, 그럼 데이터베이스를 새로운 서버에 복원 했다는 건가요? 저는 기존 서버에 복원 했다고 생각을 했습니다. 새로운 서버 IP 주소를 기존 서버 IP로 바꿔주지 않았다면, 당연히 새로운 서버의 IP 주소로 확인해서 연결을 해야 합니다. 새로 질문하신 내용으로 보아 IP 주소는 확인이 되었나 보네요.

새로운 서버에 데이터베이스를 복원 했다면 기존 서버에 연결할 때 사용하는 로그인 계정이 새로운 서버에도 있어야 하며, 복원한 데이터베이스에 대한 충분한 권한도 가지고 있어야 합니다. 데이터베이스를 복원해도 로그인 계정은 복원되지 않습니다. sa 계정으로 연결한다면 상관은 없고요(권고 사항은 아님). SSMS에서 C++에서 연결할 때 사용하는 계정과 암호로 연결이 잘 되고, 문제없이 데이터베이스에 접근이 가능한지 확인해 보시기 바랍니다. 속히 해결되기를 기원합니다.

Se Mo님의 프로필 이미지
Se Mo
질문자

제가 SQL Server는 처음 다루어 보아 관련된 지식이 입문자 수준입니다.

그래서 한번 확인 부탁드리겠습니다.

 

  1. 제가 Local에 SQL Server를 구축하였습니다. 해당 IP는 SSMS에서 접속할때 보이는 서버이름을 가져와도 되는것인가요?

  2. 구축된 Local에 DB Table을 복원하였습니다. 이때 Login계정은 SQL Server계정으로 들어가는 것인가요?

기초적인것에 막혀서 넘어가지 못하는거 같아 질문을 드립니다.

감사합니다.

장래쌤님의 프로필 이미지
장래쌤
지식공유자

안녕하세요?

  1. 제가 Local에 SQL Server를 구축하였습니다. 해당 IP는 SSMS에서 접속할때 보이는 서버이름을 가져와도 되는것인가요?

==> SSMS에서 서버 이름으로 연결했다면 C++에서도 IP주소 대신 그 이름으로 연결해도 됩니다. 단 같은 네트워트 내에 있다는 가정입니다. 아니면 SQL Server가 설치된 PC의 IP 주소를 확인해 이 IP주소로 연결해도 됩니다. SQL Server 설치된 PC의 명렬 프롬프트에서 ipconfig를 실행해 IP 주소를 확인할 수 있습니다.

 

  1. 구축된 Local에 DB Table을 복원하였습니다. 이때 Login계정은 SQL Server계정으로 들어가는 것인가요?

==> SQL Server를 설치 할 때 SQL Server 계정을 사용하도록 허용했으면 SQL Server 계정으로 연결할 수 있습니다. 아니면 Windows 계정으로 만 연결이 가능합니다. 우선 sa 계정으로 연결이 가능하다면 SQL Server 계정으로 연결이 가능하다는 확인이 됩니다. 그리고 C++ 연결 문자열에서 로그인에 사용한 계정이 SQL Server에 존재 해야 합니다. SSMS 객체 탐색기에서 [보안] - [로그인]에 해당 계정이 있는지 확인해 보세요. 그리고 이 계정이 복원한 데이터베이스에 접속할 권한이 있어야 합니다. SSMS에서 해당 데이터베이스를 펼치시고 [보안] - [사용자]에 보면 C++에서 연결할 때 사용하는 계정이 있을 것입니다. 만일 [사용자]에는 있고 [로그인]에는 없다면, 약간의 조치가 필요합니다. 우선 현재 어떤 상황인지 확인 바랍니다.

 

간단한 문제인데 상황을 제대로 알 수 없어 명확한 답변이 힘듦을 양해 바랍니다.

Se Mo님의 프로필 이미지
Se Mo
질문자

제 PC 설치해서 사용하는 거라 서버 이름으로 진행하였습니다.

그리고 sa 계정으로 로그인을 했는데도 되지 않네요.


Provider=SQLOLEDB.1;

ID=sa;

Password=;

persist security info=True;

Initial Catalog=BiHo_Chang;

Data Source=DESKTOP-LRE00NG\\SQLEXPRESS


DB_SEC_E_AUTH_FAILED 에러 반환이 되네요.

 

혹시 c++에서 접속할 수 있는 예제코드는 따로 없을까요?

장래쌤님의 프로필 이미지
장래쌤
지식공유자

DESKTOP-LRE00NG\\SQLEXPRESS 이렇게 연결한 것을 보니 익스프레스 에디션을 설치 했군요. 설치 할 때 SQL Server 계정 사용하겠다고 했고, sa 계정 암호도 설정한 상태인가요? 그럼 우선 SSMS에서는 sa 계정으로 로그인이 되는지 알려주시면 좋겠습니다.

Se Mo님의 프로필 이미지
Se Mo
질문자

DESKTOP-LRE00NG\SQLEXPRESS는 sa계정 로그인이 되지 않고

DESKTOP-LRE00NG로는 sa 계정으로 로그인이 가능합니다.

장래쌤님의 프로필 이미지
장래쌤
지식공유자

현재 PC에 SQL Server가 두 개 깔린 상황이네요. DESKTOP-LRE00NG이 아닌 DESKTOP-LRE00NG\SQLEXPRESS 에 sa 계정으로 연결해야 하는 상황인가요? 그럼 SSMS에서 DESKTOP-LRE00NG\SQLEXPRESS 연결한 후 DESKTOP-LRE00NG\SQLEXPRESS를 마우스 우측 클릭해 [속성] 화면이 뜨면 [보안] 페이지에서 서버 인증이 [SQL Server 및 Windows 인증 모드]로 되어 있는 지 보시고, 선택되지 않았다면 [SQL Server 및 Windows 인증 모드] 선택수 서비스를 재시작 해주세요. SSMS에서 DESKTOP-LRE00NG\SQLEXPRESS를 마우스 우측 클릭해 [다시 시작] 하시면 됩니다. 우선 이 부분 확인 및 처리 하신 후 결과 알려주세요.


Se Mo님의 프로필 이미지
Se Mo
질문자

DESKTOP-LRE00NG\SQLEXPRESS가 아닌

DESKTOP-LRE00NG로 연결하니 해결이 되었습니다.

 

감사합니다 ㅜㅜ

1

장래쌤님의 프로필 이미지
장래쌤
지식공유자

안녕하세요?

SQL Server에 데이터베이스를 백업 파일에서 복원을 했다면 IP 주소와 같은 서버 연결 정보는 변함이 없습니다. 데이터베이스 복원은 기존 서버에 데이터베이스를 이전 상태로 복원할 뿐, 서버에 대한 정보를 건드리지 않습니다. 혹시 데이터베이스를 복원한 후 연결이 되지 않는다면, 다른 윈인(계정 상태, 권한 문제 등)에 의한 문제일 것입니다. 이런 상황이라면 어떤 오류가 발생했는 지 알려 주시면 같이 원인을 파악해 보도록 하겠습니다. 확인해 보시고, 다시 한번 질문해 주시면 감사하겠습니다.

Se Mo님의 프로필 이미지
Se Mo

작성한 질문수

질문하기