적용 대상:Azure SQL Database
이 문서는 C 및 C++ 개발자가 Azure SQL 데이터베이스에 연결하는 데 도움이 됩니다.
필수 조건
이 가이드의 단계를 완료하려면 다음이 필요합니다.
- 활성 Azure 계정. 아직 구독하지 않은 경우 Azure 무료 평가판에 등록할 수 있습니다.
- Visual Studio 이 샘플을 빌드하고 실행하려면 C++ 언어 구성 요소를 설치해야 합니다.
- Visual Studio Linux 개발. Linux에서 개발하는 경우 Visual Studio Linux 확장도 설치해야 합니다.
데이터 액세스 기술: ODBC 및 OLE DB
현재 ODBC(Open Database Connectivity) 및 OLE DB(Object Linking and Embedding Database)의 두 가지 방법으로 Azure SQL 데이터베이스에 연결할 수 있습니다. 최근 몇 년 동안 Microsoft는 네이티브 관계형 데이터 액세스용 ODBC와 일치했습니다. ODBC는 OLE DB보다 훨씬 빠릅니다. 여기서 유일한 주의 사항은 ODBC가 이전 C 스타일 API를 사용한다는 것입니다.
Azure SQL Database 만들기
샘플 데이터베이스를 만드는 방법을 알아보려면 시작 페이지를 참조하세요.
연결 문자열 가져오기
Azure SQL Database를 프로비저닝한 후 연결 정보를 확인하고 방화벽 액세스에 대한 클라이언트 IP를 추가하려면 다음 단계를 수행해야 합니다.
Azure Portal에서 데이터베이스에 대한 개요 섹션의 일부로 나열된 데이터베이스 연결 문자열 표시를 사용하여 Azure SQL Database 연결 문자열로 이동합니다.
ODBC 탭을 선택합니다.
ODBC(Node.js 포함) [SQL 인증] 문자열의 내용을 복사합니다. 나중에 이 문자열을 사용하여 C++ ODBC 명령줄 인터프리터에서 연결합니다. 문자열은 드라이버, 서버 및 다른 데이터베이스 연결 매개 변수와 같은 세부 정보를 제공합니다.
방화벽에 IP 추가
- Azure SQL Database 논리 서버로 이동합니다. SQL Database의 개요 페이지에서 서버 이름에 대한 링크를 선택하거나 Azure Portal 검색을 통해 서버 이름으로 이동합니다.
- 보안에서 네트워킹을 선택합니다.
- 공용 액세스 탭에서 선택한 네트워크를 선택되지 않은 경우 선택합니다.
- 이러한 단계를 사용하여 방화벽에 클라이언트 IP를 추가하여 성공적인 연결을 설정할 수 있는지 확인합니다. 클라이언트 IPv4 주소 추가를 선택하거나 방화벽 규칙을 추가합니다.
이 시점에서 Azure SQL Database를 구성했으며 워크스테이션에서 C++ 코드에서 연결할 준비가 된 것입니다.
팁 (조언)
클라이언트의 워크스테이션 IP를 공용 네트워크 방화벽에 추가하는 것은 임시 랩 또는 학습 설정에 허용되지만 엔터프라이즈 솔루션 또는 수명이 긴 프로젝트의 경우 다음 보안 모범 사례를 따릅니다.
- Azure 서비스 및 리소스가 서버 수준에서 이 서버에 OFF로 액세스하도록 허용을 설정합니다.
- VNet 서비스 엔드포인트 및 VNet 방화벽 규칙을 사용합니다.
- 프라이빗 링크를 사용합니다.
Windows C/C++ 애플리케이션에서 연결
Visual Studio에서 빌드하는 이 샘플을 사용하는 Windows에서 ODBC를 사용하여 Azure SQL 데이터베이스에 쉽게 연결할 수 있습니다. 이 샘플은 Azure SQL Database에 연결하는 데 사용할 수 있는 ODBC 명령줄 인터프리터를 구현합니다. 이 샘플에서는 DSN(데이터베이스 원본 이름 파일) 파일을 명령줄 인수로 사용하거나 Azure Portal에서 이전에 복사한 자세한 정보 연결 문자열 사용합니다. 이 프로젝트의 속성 페이지를 가져오고 다음과 같이 연결 문자열 명령 인수로 붙여넣습니다.
해당 데이터베이스에 그 데이터베이스 연결 문자열로 올바른 인증을 해야 합니다.
응용 프로그램을 실행하여 빌드합니다. 성공적인 연결의 유효성을 검사하는 다음 창이 표시됩니다. 데이터베이스 연결의 유효성을 검사하는 것과 같은 CREATE TABLE
몇 가지 기본 SQL 명령을 실행할 수도 있습니다.
또는 명령 인수가 제공되지 않을 때 시작되는 마법사를 사용하여 DSN 파일을 만들 수 있습니다. 이 옵션을 사용하는 것이 좋습니다. 자동화 및 인증 설정을 보호하기 위해 이 DSN 파일을 사용할 수 있습니다.
축하합니다! 이제 Windows에서 C++ 및 ODBC를 사용하여 Azure SQL에 성공적으로 연결했습니다. Linux 플랫폼에서도 동일한 작업을 수행하도록 계속 읽을 수 있습니다.
Linux C/C++ 애플리케이션에서 연결
Visual Studio에서 C++ Linux 애플리케이션을 개발할 수 있습니다. 자세한 내용은 Linux 개발용 Visual C++ 블로그를 검토하세요.
Linux용으로 빌드하려면 Linux distro가 실행되고 있는 원격 컴퓨터가 필요합니다. 사용할 수 없는 경우 Linux Azure Virtual Machines 및 다양한 배포 방법을 사용하여 신속하게 설정할 수 있습니다.
이 가이드에서는 Ubuntu 16.04 Linux 배포판이 설치되어 있다고 가정합니다. 이 단계는 Ubuntu 15.10, Red Hat 6 및 Red Hat 7에도 적용됩니다.
다음 단계에서는 배포판에 SQL 및 ODBC에 필요한 라이브러리를 설치합니다.
sudo su
sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-test/ xenial main" > /etc/apt/sources.list.d/mssqlpreview.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
apt-get update
apt-get install msodbcsql
apt-get install unixodbc-dev-utf16 #this step is optional but recommended*
Visual Studio를 시작합니다. 도구 ->옵션 ->플랫폼> 간 연결 관리자에서 Linux 상자에 연결을 추가합니다.
SSH를 통해 연결이 설정되면 빈 프로젝트(Linux) 템플릿을 만듭니다.
그런 다음 새 C 소스 파일을 추가하고 다음 내용으로 교체할 수 있습니다. ODBC APISQLAllocHandle
SQLSetConnectAttr
를 SQLDriverConnect
사용하여 데이터베이스에 대한 연결을 초기화하고 설정할 수 있어야 합니다.
Windows ODBC 샘플과 마찬가지로 호출을 SQLDriverConnect
이전에 Azure Portal에서 복사한 데이터베이스 연결 문자열 매개 변수의 세부 정보로 바꿔야 합니다.
retcode = SQLDriverConnect(
hdbc, NULL, "Driver=ODBC Driver 13 for SQL"
"Server;Server=<yourserver>;Uid=<yourusername>;Pwd="
"<password>;database=<yourdatabase>",
SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);
컴파일하기 전에 수행할 마지막 작업은 odbc를 라이브러리 종속성으로 추가하는 것입니다.
애플리케이션을 시작하려면 디버그 메뉴에서 Linux 콘솔을 표시합니다.
연결에 성공한 경우 이제 Linux 콘솔에 현재 데이터베이스 이름이 인쇄되어 표시됩니다.
축하합니다! 가이드를 성공적으로 완료했으며 이제 Windows 및 Linux 플랫폼의 C++에서 Azure SQL 데이터베이스에 연결할 수 있습니다.
전체 C/C++ 자습서 솔루션 가져오기
GitHub에서 이 문서의 모든 샘플이 포함된 솔루션을 찾을 수 있습니다.
- ODBC C++ Windows 샘플, Azure SQL에 연결하려면 Windows C++ ODBC 샘플 다운로드
- ODBC C++ Linux 샘플, Azure SQL에 연결하려면 Linux C++ ODBC 샘플 다운로드
관련 콘텐츠
- 애플리케이션 개발 개요 - Azure SQL Database 및 Azure SQL Managed Instance
- ODBC API 참조
- 멀티테넌트 SaaS 데이터베이스 임대 패턴
- SQL Database의 기능