-
[Azure] Azure SQL Server 및 SQL DatabaseAzure 2024. 12. 24. 14:02
Azure SQL Server
Azure SQL Server는 Azure에서 호스팅되는 SQL Server 인스턴스를 의미합니다.
이는 가상 머신(VM) 형태로 제공되며, 사용자가 SQL Server의 모든 기능을 사용할 수 있습니다.
특징
- 완전한 제어
- 사용자는 SQL Server의 모든 설정과 구성을 직접 관리할 수 있습니다.
- 유연한 배포
- 필요에 따라 인스턴스를 선택하고, 하드웨어 및 소프트웨어를 자유롭게 구성할 수 있습니다.
- 온프레미스와 유사한 환경
- 기존 SQL Server와 유사한 경험을 제공합니다.
Azure SQL Database
Azure SQL Database는 Microsoft Azure에서 제공하는 완전 관리형 관계형 데이터베이스 서비스입니다.
사용자는 데이터베이스에만 집중하고 인프라 관리의 부담을 덜 수 있습니다.
특징
- 자동 관리
- 백업, 패치, 복원 등의 관리 작업이 자동으로 이루어집니다.
- 스케일링
- 필요에 따라 쉽게 성능을 조정할 수 있습니다.
- 고가용성
- 내장된 고가용성 기능을 통해 데이터베이스의 가용성이 높습니다.
- 서버리스 옵션
- 사용량에 따라 비용을 지불하는 서버리스 모델을 지원합니다.
실습
[Azure SQL Database 및 SQL Server 생성]
1. SQL 데이터베이스 > '+ 만들기' 클릭
2. 구독, 리소스 그룹, 데이터베이스 이름 지정 > SQL server가 없을 경우 '새로 만들기'
3. SQL Database 서버 관한 정보 입력 후 '검토 + 만들기'
[Azure SQL Server에 방화벽 규칙 생성]
Azure SQL 데이터베이스는 서버 수준에서 IP 방화벽을 만듭니다. 방화벽 규칙에서 특정 IP가 방화벽을 통과하도록 허용하지 않는 한 이 방화벽은 외부 애플리케이션과 도구가 서버 및 서버의 데이터베이스에 연결하지 못하게 차단합니다. 데이터베이스에 대한 외부 연결을 사용하려면 먼저 IP 주소(또는 IP 주소 범위)에 대한 IP 방화벽 규칙을 추가해야 합니다. 다음 단계에 따라 서버 수준 IP 방화벽 규칙을 만듭니다.
1. SQL Database 개요 > 서버 이름 확인 후 클릭
2. SQL Server > 보안 > 네트워킹 클릭
3. 선택한 네트워크 > 클라이언트 IPv4 주소 추가 > 저장
로컬 PC에서 SQL Server에 접근하기 위해, 내 공용 IP의 접근을 허용해주었다.
[Azure SQL Server 연결]
1. SQL Server Management Studio 20 실행 후, 정보 입력 후 Connect
[데이터베이스에 테이블 생성 후 데이터 로드]
1. 생성한 DB의 오른쪽 마우스 > New Query 클릭
2. 예시 쿼리 입력 > 실행
-- Create Person table CREATE TABLE Person ( PersonId INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(128) NOT NULL, MiddelInitial NVARCHAR(10), LastName NVARCHAR(128) NOT NULL, DateOfBirth DATE NOT NULL ) -- Create Student table CREATE TABLE Student ( StudentId INT IDENTITY PRIMARY KEY, PersonId INT REFERENCES Person (PersonId), Email NVARCHAR(256) ) -- Create Course table CREATE TABLE Course ( CourseId INT IDENTITY PRIMARY KEY, Name NVARCHAR(50) NOT NULL, Teacher NVARCHAR(256) NOT NULL ) -- Create Credit table CREATE TABLE Credit ( StudentId INT REFERENCES Student (StudentId), CourseId INT REFERENCES Course (CourseId), Grade DECIMAL(5,2) CHECK (Grade <= 100.00), Attempt TINYINT, CONSTRAINT [UQ_studentgrades] UNIQUE CLUSTERED ( StudentId, CourseId, Grade, Attempt ) )
3. 테이블 생성 확인
4. 로컬 PC 내 다운로드 폴더에 샘플 데이터 저장 ( 예를 들어 c:\Users\<your user name>\Downloads)
5. cmd창에서 해당 폴더 경로로 이동 후 해당 명령어 실행하여 데이터 로드
bcp Course in SampleCourseData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Person in SamplePersonData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Student in SampleStudentData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Credit in SampleCreditData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
[쿼리 실행]
1. 다음 T-SQL 쿼리를 실행하여 데이터베이스 테이블에서 정보를 검색합니다.
이 첫 번째 쿼리는 4개의 테이블을 모두 조인하여 'Dominick Pope' 선생님의 학생 중에 성적이 75%보다 높은 학생을 찾습니다. 쿼리 창에서 다음 T-SQL 쿼리를 실행합니다
-- Find the students taught by Dominick Pope who have a grade higher than 75% SELECT person.FirstName, person.LastName, course.Name, credit.Grade FROM Person AS person INNER JOIN Student AS student ON person.PersonId = student.PersonId INNER JOIN Credit AS credit ON student.StudentId = credit.StudentId INNER JOIN Course AS course ON credit.CourseId = course.courseId WHERE course.Teacher = 'Dominick Pope' AND Grade > 75;
2. 이 쿼리는 4개의 테이블을 모두 조인하여 'Noe Coleman'이 등록한 적이 있는 과정을 찾습니다. 쿼리 창에서 다음 T-SQL 쿼리를 실행합니다.
-- Find all the courses in which Noe Coleman has ever enrolled SELECT course.Name, course.Teacher, credit.Grade FROM Course AS course INNER JOIN Credit AS credit ON credit.CourseId = course.CourseId INNER JOIN Student AS student ON student.StudentId = credit.StudentId INNER JOIN Person AS person ON person.PersonId = student.PersonId WHERE person.FirstName = 'Noe' AND person.LastName = 'Coleman';
[참고 문서]
자습서: SSMS를 사용하여 첫 번째 관계형 데이터베이스 디자인 - Azure SQL Database | Microsoft Learn
'Azure' 카테고리의 다른 글
[Azure] Osdisk 크기 축소 (0) 2025.01.07 [Azure] Azure Bastion에 NSG 설정 (0) 2024.12.21 [Azure] 가상 네트워크 서비스 엔드포인트를 이용한, 리소스에 대한 네트워크 액세스 제한 (0) 2023.04.03 [Azure] 네트워크 보안 그룹 (0) 2023.03.31 [Azure] Virtual Network (0) 2023.03.31 - 완전한 제어