다음을 통해 공유


Azure SQL Database에 연결 추가

Visual Studio 연결된 서비스를 사용하면 Azure SQL Database, 로컬 에뮬레이터(예: 개발 중) 또는 온-프레미스 SQL Server 데이터베이스에 연결할 수 있습니다. 온-프레미스 SQL Server의 경우 데이터베이스에 연결을 참조하세요.

Visual Studio에서는 연결된 서비스 기능을 사용하여 다음 프로젝트 유형 중 하나에서 연결할 수 있습니다

  • ASP.NET Core
  • .NET Core(콘솔 앱, WPF, Windows Forms, 클래스 라이브러리 포함)
  • .NET Core 작업자 역할
  • Azure 기능
  • .NET Framework 콘솔 앱
  • ASP.NET MVC(Model-View-Controller)(.NET Framework)
  • 유니버설 Windows 플랫폼 앱

연결된 서비스 기능은 필요한 모든 참조와 연결 코드를 프로젝트에 추가하고 구성 파일을 적절하게 수정합니다.

필수 조건

연결된 서비스를 사용하여 Azure SQL Database에 연결

  1. Visual Studio에서 새 프로젝트를 엽니다.

  2. 솔루션 탐색기에서 연결된 서비스 노드를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 추가를 선택하여 사용 가능한 서비스 메뉴를 엽니다.

    연결된 서비스 상황에 맞는 메뉴 옵션을 보여 주는 스크린샷.

    연결된 서비스 노드를 확인할 수 없는 경우, 프로젝트>연결된 서비스>추가를 선택합니다.

  3. SQL Server 데이터베이스를 선택합니다 . 디펜던시 연결 페이지가 나타납니다. 몇 가지 옵션이 표시됩니다.

    • Visual Studio와 함께 설치되는 기본 제공 SQL 데이터베이스 제품인 SQL Server Express LocalDB
    • 컴퓨터의 로컬 컨테이너에 있는 SQL Server 데이터베이스
    • 로컬 네트워크의 온프레미스 SQL 서버인 SQL Server 데이터베이스
    • Azure SQL Database, Azure 서비스로 실행되는 SQL 데이터베이스의 경우

    로컬 데이터베이스로 시작하면 비용을 절감하고 초기 개발을 간소화할 수 있습니다. 나중에 이 단계를 반복하고 다른 옵션을 선택하여 Azure의 라이브 서비스로 마이그레이션할 수 있습니다. 로컬에서 데이터베이스를 만들어 Azure에서 다시 만들려는 경우, 그 시점에 데이터베이스를 Azure로 마이그레이션할 수 있습니다.

    SQL Database 선택 사항을 보여주는 스크린샷.

    나중에 이 단계를 반복하고 다른 옵션을 선택하여 라이브 서비스로 마이그레이션할 수 있습니다.Azure 서비스에 연결하려면 다음 단계를 계속 진행하거나 아직 로그인하지 않은 경우 계속하기 전에 Azure 계정에 로그인하세요. Azure 계정이 없으면 평가판에 등록할 수 있습니다.

  4. Azure SQL Database 구성 화면에서 기존 Azure SQL Database를 선택하고 다음을 선택합니다.

    새 구성 요소를 만들어야 하는 경우 다음 단계로 이동합니다. 그러지 않은 경우 7단계로 건너뜁니다.

  5. Azure SQL Database를 만들려면 다음을 수행합니다.

    1. 녹색 더하기 기호로 새로 만들기를 선택합니다.

    2. Azure SQL Database: 새로 만들기 화면에 입력하고 만들기를 선택합니다.

    3. Azure SQL Database 구성 화면이 표시되면 새 데이터베이스가 목록에 표시됩니다. 목록에서 새 데이터베이스를 선택하고 다음을 선택합니다.

  6. 연결 문자열 이름을 입력하거나 기본값을 선택한 다음 추가 설정을 선택합니다.

    참고 항목

    Visual Studio 2022 버전 17.12 이상을 사용하는 이 절차에서는 암호 없는 인증 방법인 Microsoft Entra 관리 ID를 사용하여 데이터베이스에 연결합니다. 이 화면의 경고는 Visual Studio에서 이 절차를 완료한 후 Azure Portal에서 수동 단계를 수행해야 한다는 것을 의미합니다. Microsoft Entra 인증을 참조하세요.

  7. 연결 문자열 로컬 비밀 파일에 저장할지 또는 Azure Key Vault에 저장할지를 선택한 다음 다음을 선택합니다.

    Azure SQL Database 연결 문자열 저장할 위치에 대한 옵션을 보여 주는 스크린샷

  8. 변경 내용 요약 화면에는 프로세스를 완료할 경우 프로젝트에 적용되는 모든 수정 사항이 표시됩니다. 변경 내용이 맞으면 마침을 선택합니다.

    방화벽 규칙을 설정하라는 메시지가 표시되면 를 선택합니다.

    방화벽 규칙을 보여 주는 스크린샷.

  9. 솔루션 탐색기에서 연결된 서비스 노드를 두 번 클릭하여 연결된 서비스 탭을 엽니다. 연결은 서비스 종속성 섹션 아래에 나타납니다:

    추가한 종속성 옆의 점 3개를 클릭하면 연결과 같은 다양한 옵션이 표시되어 마법사를 다시 열고 연결을 변경할 수 있습니다. 창 오른쪽 상단에 있는 점 3개를 클릭하면 로컬 종속성을 시작하고 설정을 변경하는 등의 옵션을 볼 수도 있습니다.

  10. 관리 ID(Visual Studio 17.12 이상)를 사용하는 경우 다음 섹션을 참조하여 Azure SQL 데이터베이스에서 관리 ID 사용자를 설정합니다.

Microsoft Entra 인증

Visual Studio 2022 버전 17.12 이상에서는 연결된 서비스 프로시저에서 가장 안전한 인증 방법인 Microsoft Entra 인증을 사용합니다. 그러나 Visual Studio는 자동으로 Azure SQL 데이터베이스에 Microsoft Entra 관리자 사용자를 만들지 않습니다. Microsoft Entra 관리 사용자가 없으면 연결이 성공적으로 인증되지 않습니다.

Azure Portal, PowerShell 또는 Azure CLI를 사용하여 Microsoft Entra 관리 사용자를 만들 수 있습니다. 이러한 각 방법에 대한 자세한 지침은 Microsoft Entra 관리 사용자 설정을 참조 하세요.

연결된 서비스 프로세스를 완료한 후에는 관리 ID에 해당하는 SQL 사용자를 만들고 데이터베이스에서 SQL 문을 실행하여 사용 권한을 설정해야 합니다. Azure Portal의 쿼리 편집 기에서 Microsoft Entra 관리자 사용자로 로그인하고 다음과 같은 문을 실행합니다.

CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];

GO

Microsoft <identity-name> Entra ID의 관리 ID 이름입니다. ID가 시스템 할당된 경우 이름은 App Service 앱의 이름과 항상 동일합니다. 배포 슬롯의 경우 시스템 할당 ID의 이름은 <app-name>/slots/<slot-name>입니다. Microsoft Entra 그룹에 대한 권한을 부여하려면 대신 그룹의 표시 이름(예: myAzureSQLDBAccessGroup)을 사용합니다. Azure SQL용 Microsoft Entra에서 관리 ID 유형관리 ID를 참조하세요. 추가하는 역할은 사용 사례에 따라 달라집니다. ALTER ROLE을 참조하세요.

코드가 참조하는 System.Data.SqlClient경우 Microsoft Entra 인증을 Microsoft.Data.SqlClientSystem.Data.SqlClient 지원하지 않으므로 업그레이드해야 합니다. 업그레이드하려면 Microsoft.Data.SqlClient NuGet 패키지를 참조하고 네임스페이스를 참조 System.Data.SqlClient Microsoft.Data.SqlClient 하는 using 지시문을 업데이트합니다. 몇 가지 동작이 변경되었습니다. 참고 자료 포팅을 참조하세요.

  1. Visual Studio에서 새 프로젝트를 엽니다.

  2. 솔루션 탐색기에서 연결된 서비스 노드를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 추가를 선택하여 사용 가능한 서비스 메뉴를 엽니다.

    연결된 서비스 상황에 맞는 메뉴 옵션을 보여 주는 스크린샷.

    연결된 서비스 노드를 확인할 수 없는 경우, 프로젝트>연결된 서비스>추가를 선택합니다.

  3. SQL Server 데이터베이스를 선택합니다 . 디펜던시 연결 페이지가 나타납니다. 몇 가지 옵션이 표시됩니다.

    • Visual Studio와 함께 설치되는 기본 제공 SQL 데이터베이스 제품인 SQL Server Express LocalDB
    • 컴퓨터의 로컬 컨테이너에 있는 SQL Server 데이터베이스
    • 로컬 네트워크의 온프레미스 SQL 서버인 SQL Server 데이터베이스
    • Azure SQL Database, Azure 서비스로 실행되는 SQL 데이터베이스의 경우

    로컬 데이터베이스로 시작하면 비용을 절감하고 초기 개발을 간소화할 수 있습니다. 나중에 이 단계를 반복하고 다른 옵션을 선택하여 Azure의 라이브 서비스로 마이그레이션할 수 있습니다. 로컬에서 데이터베이스를 만들어 Azure에서 다시 만들려는 경우, 그 시점에 데이터베이스를 Azure로 마이그레이션할 수 있습니다.

    SQL Database 선택 사항을 보여주는 스크린샷.

    나중에 이 단계를 반복하고 다른 옵션을 선택하여 라이브 서비스로 마이그레이션할 수 있습니다.Azure 서비스에 연결하려면 다음 단계를 계속 진행하거나 아직 로그인하지 않은 경우 계속하기 전에 Azure 계정에 로그인하세요. Azure 계정이 없으면 평가판에 등록할 수 있습니다.

  4. Azure SQL Database 구성 화면에서 기존 Azure SQL Database를 선택하고 다음을 선택합니다.

    새 구성 요소를 만들어야 하는 경우 다음 단계로 이동합니다. 그러지 않은 경우 7단계로 건너뜁니다.

  5. Azure SQL Database를 만들려면 다음을 수행합니다.

    1. 녹색 더하기 기호로 새로 만들기를 선택합니다.

    2. Azure SQL Database: 새로 만들기 화면에 입력하고 만들기를 선택합니다.

    3. Azure SQL Database 구성 화면이 표시되면 새 데이터베이스가 목록에 표시됩니다. 목록에서 새 데이터베이스를 선택하고 다음을 선택합니다.

  6. 연결 문자열 이름을 입력하거나 기본값을 선택하고 연결 문자열을 로컬 비밀 파일에 저장할지, 아니면 Azure Key Vault에 저장할지 선택합니다.

  7. 변경 내용 요약 화면에는 프로세스를 완료할 경우 프로젝트에 적용되는 모든 수정 사항이 표시됩니다. 변경 내용이 맞으면 마침을 선택합니다.

    방화벽 규칙을 설정하라는 메시지가 표시되면 를 선택합니다.

    방화벽 규칙을 보여 주는 스크린샷.

  8. 솔루션 탐색기에서 연결된 서비스 노드를 두 번 클릭하여 연결된 서비스 탭을 엽니다. 연결은 서비스 종속성 섹션 아래에 나타납니다:

    추가한 종속성 옆의 점 3개를 클릭하면 연결과 같은 다양한 옵션이 표시되어 마법사를 다시 열고 연결을 변경할 수 있습니다. 창 오른쪽 상단에 있는 점 3개를 클릭하면 로컬 종속성을 시작하고 설정을 변경하는 등의 옵션을 볼 수도 있습니다.

연결 문자열에 액세스

ASP.NET Core에서 개발 중인 앱 비밀 보안 스토리지를 따라 비밀을 안전하게 저장하는 방법을 알아보세요. 특히, 시크릿 저장소에서 연결 문자열을 읽으려면 설정 API를 통해 시크릿 읽기와 같이 코드를 추가하면 됩니다. ASP.NET Core의 종속성 주입

Entity Framework 마이그레이션

초기 개발 중에 로컬 데이터 저장소로 작업하는 것이 편리할 수 있지만 Entity Framework Core를 사용하면 클라우드로 이동할 준비가 되었을 때 Visual Studio의 Entity Framework 마이그레이션 지원을 사용하여 데이터베이스를 이동하거나 변경 내용을 원격 데이터 저장소와 병합할 수 있습니다. 마이그레이션 개요를 참조하세요.

연결된 서비스 탭에서 스크린샷과 같이 세 개의 점을 클릭하여 마이그레이션 명령을 찾을 수 있습니다.

마이그레이션 명령을 보여 주는 스크린샷.

새 마이그레이션을 만들거나, 직접 적용하거나, 마이그레이션을 적용하는 SQL 스크립트를 생성하는 명령을 사용할 수 있습니다.

마이그레이션 추가

데이터 모델 변경이 도입되면 Entity Framework Core 도구를 사용하여 데이터베이스 스키마를 동기화 상태로 유지하는 데 필요한 업데이트를 코드에 설명하는 해당 마이그레이션을 추가할 수 있습니다. Entity Framework Core는 현재 모델을 이전 모델의 스냅샷과 비교하여 차이점을 확인하고 마이그레이션 원본 파일을 생성합니다. 파일은 일반적으로 Migrations라는 폴더에 있는 프로젝트에 추가되며 다른 소스 파일과 마찬가지로 프로젝트의 소스 제어에서 추적할 수 있습니다.

이 옵션을 선택하면 마이그레이션하려는 데이터베이스 스키마를 나타내는 컨텍스트 클래스 이름을 입력하라는 메시지가 표시됩니다.

Entity Framework 마이그레이션을 추가하는 것을 보여주는 스크린샷.

데이터베이스 업데이트

마이그레이션을 만든 후에는 데이터베이스에 적용할 수 있습니다. Entity Framework는 마이그레이션 코드에 지정된 변경 내용으로 데이터베이스와 스키마를 업데이트합니다. 이 옵션을 선택하면 마이그레이션하려는 데이터베이스 스키마를 나타내는 컨텍스트 클래스 이름을 입력하라는 메시지가 표시됩니다.

SQL 스크립트 생성

프로덕션 데이터베이스에 마이그레이션을 배포하는 권장 방법은 SQL 스크립트를 생성하는 것입니다. 이 전략의 장점은 다음과 같습니다.

  • 정확성을 위해 SQL 스크립트를 검토할 수 있습니다. 이는 프로덕션 데이터베이스에 스키마 변경 내용을 적용하는 것이 데이터 손실을 수반할 수 있는 잠재적으로 위험한 작업이므로 중요합니다.
  • 경우에 따라 프로덕션 데이터베이스의 특정 요구 사항에 맞게 스크립트를 조정할 수 있습니다.
  • SQL 스크립트는 배포 기술과 함께 사용할 수 있으며 CI 프로세스의 일부로 생성될 수도 있습니다.
  • SQL 스크립트는 DBA에 제공할 수 있으며 별도로 관리 및 보관할 수 있습니다.

이 옵션을 사용하면 데이터베이스 컨텍스트 클래스와 스크립트 파일의 위치를 묻는 메시지가 표시됩니다.

SQL 스크립트 생성 옵션을 보여 주는 스크린샷.

SQL Server 개체 탐색기에서 열기

편의를 위해 이 명령을 사용하면 SQL Server 개체 탐색기로 이동하여 테이블 및 기타 데이터베이스 엔터티를 보고 데이터로 직접 작업할 수 있습니다. 개체 탐색기를 참조하세요.

SQL Server 개체 탐색기 보여 주는 스크린샷.

다음 단계

Azure SQL Database용 빠른 시작을 계속할 수 있지만 처음부터 시작하는 대신 초기 연결이 설정된 후에 시작할 수 있습니다. Entity Framework를 사용하는 경우 코드 추가에서 시작하여 Azure SQL Database에 연결할 수 있습니다. 데이터 클래스를 사용 SqlClient 하거나 ADO.NET 경우 코드 추가에서 시작하여 Azure SQL Database에 연결할 수 있습니다.

연결 문자열을 가져오는 다른 방법을 사용하는 빠른 시작에 사용된 코드와 정확히 일치하지 않습니다. 연결 문자열 비밀이며 ASP.NET Core에서 개발 중인 앱 비밀의 금고 스토리지에 설명된 대로 안전하게 저장됩니다. 특히, 시크릿 저장소에서 연결 문자열을 읽으려면 설정 API를 통해 시크릿 읽기와 같이 코드를 추가하면 됩니다.

ASP.NET Core 프로젝트에서 연결된 서비스에서 만든 연결 설정 또는 연결 문자열 구성 개체에서 사용할 수 있습니다. 다음 예제와 같이 클래스의 WebApplicationBuilder 속성(builder 많은 프로젝트 템플릿)으로 액세스할 수 있습니다.

var connection = builder.Configuration["ConnectionStrings:DatabaseConnection"];

Configuration 속성에 제공할 문자열은 연결된 서비스 절차에서 제공한 secrets.json 또는 Azure Key Vault의 키와 일치해야 합니다. 예를 들어 Visual Studio 2022 17.12 이상에서는 연결 설정이 다음과 같이 secrets.json 저장됩니다.

{
  "ConnectionStrings:DatabaseConnection": "Server=tcp:webapplication16dbserver.database.windows.net;Authentication=Active Directory Default;Database=WebApplication16_db;",
}

ASP.NET Core 프로젝트에서 연결된 서비스에서 만든 연결 설정 또는 연결 문자열 구성 개체에서 사용할 수 있습니다. 다음 예제와 같이 클래스의 WebApplicationBuilder 속성(builder 많은 프로젝트 템플릿)으로 액세스할 수 있습니다.

var connection = builder.Configuration["ConnectionStrings:ConnectionString1"];