Visual Studio Connected Services를 사용하면 Azure SQL Database, 로컬 에뮬레이터(예: 개발 중) 또는 온-프레미스 SQL Server 데이터베이스에 연결할 수 있습니다. 온프레미스 SQL Server의 경우 데이터베이스에 연결을 참조하세요.
Visual Studio를 사용하면 연결된 서비스 기능을 사용하여 다음 프로젝트 형식 중 하나에서 연결할 수 있습니다.
- ASP.NET Core
- .NET Core(콘솔 앱, WPF, Windows Forms, 클래스 라이브러리 포함)
- .NET Core 작업자 역할
- Azure Functions
- .NET Framework 콘솔 앱
- ASP.NET MVC (Model-View-Controller) (.NET Framework)
- 유니버설 Windows 플랫폼 앱
연결된 서비스 기능은 필요한 모든 참조 및 연결 코드를 프로젝트에 추가하고 구성 파일을 적절하게 수정합니다.
필수 구성 요소
- Azure 워크로드가 설치된 Visual Studio.
- 지원되는 형식 중 하나의 프로젝트
- Azure 계정. Azure 계정이 없는 경우 Visual Studio 구독자가 Azure 혜택을 활성화하거나 평가판 등록할있습니다.
연결된 서비스를 사용하여 Azure SQL Database에 연결
Visual Studio에서 프로젝트를 엽니다.
솔루션 탐색기연결된 서비스 노드를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 추가 선택하여 사용 가능한 서비스 메뉴를 엽니다.
연결된 서비스 상황에 맞는 메뉴 옵션을 보여 주는
연결된 서비스 노드가 표시되지 않으면 Project>연결된 서비스>추가를 선택합니다.
SQL Server 데이터베이스 선택합니다. 종속성에 연결 페이지가 표시됩니다. 다음과 같은 몇 가지 옵션이 표시됩니다.
- Visual Studio와 함께 설치된 기본 제공 SQL Database 제품인 SQL Server Express LocalDB
- 컴퓨터의 로컬 컨테이너에 있는 SQL Server 데이터베이스
- SQL Server 데이터베이스, 로컬 네트워크의 사내 SQL Server
- Azure 서비스로 실행되는 SQL Database의 경우 Azure SQL Database
로컬 데이터베이스로 시작하여 비용을 절감하고 초기 개발을 간소화할 수 있습니다. 나중에 이러한 단계를 반복하고 다른 옵션을 선택하여 Azure에서 라이브 서비스로 마이그레이션할 수 있습니다. Azure에서 다시 만들려는 데이터베이스를 로컬로 만드는 경우 해당 시점에 데이터베이스를 Azure로 마이그레이션할 수 있습니다.
SQL Database 선택 항목을 보여 주는
Azure 서비스에 연결하려면 다음 단계를 계속 진행하거나 아직 로그인하지 않은 경우 계속하기 전에 Azure 계정에 로그인합니다. Azure 계정이 없는 경우 평가판등록할 수 있습니다.
Azure SQL Database 구성 화면에서 기존 Azure SQL Database를 선택하고 다음을 선택합니다.
새 구성 요소를 만들어야 하는 경우 다음 단계로 이동합니다. 그렇지 않으면 7단계로 넘어가십시오.
Azure SQL 데이터베이스를 만들려면 다음을 수행합니다.
녹색 더하기 기호를 클릭하여 새로 만들기를 선택합니다.
Azure SQL Database 작성: 새 화면을 작성하고 만들기를 선택합니다.
Azure SQL Database 구성 화면이 표시되면 새 데이터베이스가 목록에 표시됩니다. 목록에서 새 데이터베이스를 선택하고 다음 선택합니다.
연결 문자열 이름을 입력하거나 기본값을 선택한 다음 추가 설정선택합니다.
메모
Visual Studio 2022 버전 17.12 이상을 사용하는 이 절차에서는 암호 없는 인증 방법인 Microsoft Entra 관리 ID를 사용하여 데이터베이스에 연결합니다. 이 화면의 경고는 Visual Studio에서 이 절차를 완료한 후 Azure Portal에서 수동 단계를 수행해야 한다는 것을 의미합니다. Microsoft Entra 인증을 참조하세요.
연결 문자열을 로컬 비밀 파일에 저장할지 또는 Azure Key Vault 저장할지 선택한 다음 선택합니다.
변경 내용에 대한 요약 화면에는 프로세스를 완료하는 경우 프로젝트에 대한 모든 수정 내용이 표시됩니다. 변경 내용이 정상인 경우 마침선택합니다.
방화벽 규칙을 설정하라는 메시지가 표시되면 예선택합니다.
방화벽 규칙을 보여 주는
솔루션 탐색기에서 연결된 서비스 노드를 두 번 클릭하여 연결된 서비스 탭을 엽니다. 서비스 종속성 섹션 아래에 연결이 나타납니다.
"서비스 종속성" 섹션을 보여 주는
추가한 종속성 옆에 있는 세 개의 점을 클릭하면 Connect 같은 다양한 옵션을 확인하여 마법사를 다시 열고 연결을 변경할 수 있습니다. 창의 오른쪽 위에 있는 세 개의 점을 클릭하여 로컬 종속성을 시작하고 설정을 변경하는 옵션을 확인할 수도 있습니다.
관리 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
<identity-name>
Microsoft Entra ID의 관리 ID 이름입니다. ID가 시스템 할당인 경우 이름은 항상 App Service 앱의 이름과 동일합니다. 배포 슬롯의 경우 시스템 할당 ID의 이름은 <app-name>/slots/<slot-name>
. Microsoft Entra 그룹에 대한 권한을 부여하려면 그룹의 표시 이름(예: myAzureSQLDBAccessGroup
)을 대신 사용합니다. Azure SQL Microsoft Entra에서 관리 ID 유형 및관리 ID를 참조하세요. 추가하는 역할은 사용 사례에 따라 달라집니다.
에 있는 ROLE 변경을 참조하세요.
코드가 System.Data.SqlClient
참조하는 경우 System.Data.SqlClient
Microsoft Entra 인증을 지원하지 않으므로 Microsoft.Data.SqlClient
업그레이드해야 합니다. 업그레이드하려면 microsoft.Data.SqlClient NuGet 패키지 참조를 추가하고 Microsoft.Data.SqlClient
네임스페이스를 참조하도록 System.Data.SqlClient
참조하는 using 지시문을 업데이트합니다. 몇 가지 동작이 변경되었습니다. 포팅 치트 시트 를에서 참조하세요.
Visual Studio에서 프로젝트를 엽니다.
솔루션 탐색기연결된 서비스 노드를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 추가 선택하여 사용 가능한 서비스 메뉴를 엽니다.
연결된 서비스 상황에 맞는 메뉴 옵션을 보여 주는
연결된 서비스 노드가 표시되지 않으면 Project>연결된 서비스>추가를 선택합니다.
SQL Server 데이터베이스을 선택하십시오. 종속성에 연결 페이지가 나타납니다. 다음과 같은 몇 가지 옵션이 표시됩니다.
- Visual Studio와 함께 설치된 기본 제공 SQL Database 제품인 SQL Server Express LocalDB
- 컴퓨터의 로컬 컨테이너에 있는 SQL Server 데이터베이스
- SQL Server Database, 로컬 네트워크의 내부 설치형 SQL Server
- Azure SQL Database는 Azure 서비스로 실행되는 SQL Database입니다.
로컬 데이터베이스로 시작하여 비용을 절감하고 초기 개발을 간소화할 수 있습니다. 나중에 이러한 단계를 반복하고 다른 옵션을 선택하여 Azure에서 라이브 서비스로 마이그레이션할 수 있습니다. Azure에서 다시 만들려는 데이터베이스를 로컬로 만드는 경우 해당 시점에 데이터베이스를 Azure로 마이그레이션할 수 있습니다.
SQL Database 선택 항목을 보여 주는
Azure 서비스에 연결하려면 다음 단계를 계속 진행하거나 아직 로그인하지 않은 경우 계속하기 전에 Azure 계정에 로그인합니다. Azure 계정이 없는 경우 평가판등록할 수 있습니다.
Azure SQL Database 구성 화면에서 기존 Azure SQL Database를 선택한 다음, 다음을 선택합니다.
새 구성 요소를 만들어야 하는 경우 다음 단계로 이동합니다. 그렇지 않으면 7단계로 건너뛰세요.
Azure SQL 데이터베이스를 만들려면 다음을 수행합니다.
녹색 더하기 기호 옆에 있는 새로 만들기을 선택합니다.
Azure SQL Database: 새 화면을 작성하고, 만들기을 선택합니다.
Azure SQL Database 구성 화면이 표시되면 새 데이터베이스가 목록에 나타납니다. 목록에서 새 데이터베이스를 선택하고 다음 선택합니다.
연결 문자열 이름을 입력하거나 기본값을 선택하고 연결 문자열을 로컬 비밀 파일에 저장할지 또는 Azure Key Vault 저장할지 선택합니다.
변경 내용에 대한 요약 화면에는 프로세스를 완료하는 경우 프로젝트에 대한 모든 수정 내용이 표시됩니다. 변경 내용이 정상인 경우 마침선택합니다.
방화벽 규칙을 설정하라는 메시지가 표시되면 예선택합니다.
방화벽 규칙을 보여 주는
솔루션 탐색기에서 연결된 서비스 노드를 두 번 클릭하여 연결된 서비스 탭을 엽니다. 서비스 종속성 섹션 아래에 연결이 나타납니다.
"서비스 종속성" 섹션을 보여 주는
추가한 종속성 옆에 있는 세 개의 점을 클릭하면 Connect 같은 다양한 옵션을 확인하여 마법사를 다시 열고 연결을 변경할 수 있습니다. 창의 오른쪽 위에 있는 세 개의 점을 클릭하여 로컬 종속성을 시작하고 설정을 변경하는 옵션을 확인할 수도 있습니다.
연결 문자열에 액세스
ASP.NET Core 개발 중인 앱 비밀의 안전한 스토리지를따라 비밀을 안전하게 저장하는 방법을 알아봅니다. 특히 비밀 저장소에서 연결 문자열을 읽으려면 구성 API통해 비밀을 읽으면서 코드를 추가할 수 있습니다. ASP.NET Core의 종속성 주입을참조하세요.
Entity Framework 마이그레이션
초기 개발 중에 로컬 데이터 저장소로 작업하는 것이 편리할 수 있지만 Entity Framework Core를 사용하면 클라우드로 이동할 준비가 되면 Visual Studio의 Entity Framework 마이그레이션 지원을 사용하여 데이터베이스를 이동하거나 변경 내용을 원격 데이터 저장소와 병합할 수 있습니다. 마이그레이션 개요참조하세요.
연결된 서비스 탭에서 스크린샷과 같이 세 개의 점을 클릭하여 마이그레이션 명령을 찾을 수 있습니다.
이 명령은 새 마이그레이션을 만들거나, 직접 적용하거나, 마이그레이션을 적용하는 SQL 스크립트를 생성하는 데 사용할 수 있습니다.
마이그레이션 추가
데이터 모델 변경이 도입되면 Entity Framework Core 도구를 사용하여 데이터베이스 스키마를 동기화 상태로 유지하는 데 필요한 업데이트를 코드에 설명하는 해당 마이그레이션을 추가할 수 있습니다. Entity Framework Core는 현재 모델을 이전 모델의 스냅샷과 비교하여 차이점을 확인하고 마이그레이션 원본 파일을 생성합니다. 파일은 일반적으로 마이그레이션 폴더에 프로젝트에 추가되며 다른 소스 파일과 마찬가지로 프로젝트의 소스 제어에서 추적할 수 있습니다.
이 옵션을 선택하면 마이그레이션하려는 데이터베이스 스키마를 나타내는 컨텍스트 클래스 이름을 입력하라는 메시지가 표시됩니다.
Entity Framework 마이그레이션을 추가하는 것을 보여주는
데이터베이스 업데이트
마이그레이션을 만든 후에는 데이터베이스에 적용할 수 있습니다. Entity Framework는 마이그레이션 코드에 지정된 변경 내용으로 데이터베이스와 스키마를 업데이트합니다. 이 옵션을 선택하면 마이그레이션하려는 데이터베이스 스키마를 나타내는 컨텍스트 클래스 이름을 입력하라는 메시지가 표시됩니다.
SQL 스크립트 생성
프로덕션 데이터베이스에 마이그레이션을 배포하는 권장 방법은 SQL 스크립트를 생성하는 것입니다. 이 전략의 장점은 다음과 같습니다.
- SQL 스크립트는 정확도를 검토할 수 있습니다. 이는 프로덕션 데이터베이스에 스키마 변경 내용을 적용하는 것이 데이터 손실을 수반할 수 있는 잠재적으로 위험한 작업이므로 중요합니다.
- 경우에 따라 프로덕션 데이터베이스의 특정 요구 사항에 맞게 스크립트를 조정할 수 있습니다.
- SQL 스크립트는 배포 기술과 함께 사용할 수 있으며 CI 프로세스의 일부로 생성될 수도 있습니다.
- SQL 스크립트는 DBA에 제공될 수 있으며 별도로 관리 및 보관할 수 있습니다.
이 옵션을 사용하면 데이터베이스 컨텍스트 클래스와 스크립트 파일의 위치를 묻는 메시지가 표시됩니다.
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"];
관련 콘텐츠
- Azure SQL Database 제품 페이지
- Azure SQL Database 설명서