Visual Studio의 데이터베이스 기능에 필요한 권한

Visual Studio에서 데이터베이스에 대한 작업을 수행하려면 먼저 해당 데이터베이스에 대한 특정 권한이 있는 계정으로 로그온해야 합니다. 필요한 특정 권한은 수행하는 작업에 따라 달라집니다. 다음 단원에서는 수행하려는 각 작업과 해당 작업을 수행하는 데 필요한 특정 권한을 설명합니다.

  • 데이터베이스 만들기 또는 배포 권한

  • 데이터베이스 리팩터링 권한

  • 데이터베이스에 대한 단위 테스트 수행 권한

  • 데이터 생성 권한

  • 스키마 및 데이터 비교 권한

  • T-SQL(Transact-SQL) 편집기 실행 권한

  • SQL CLR(SQL Server 공용 언어 런타임) 프로젝트에 대한 사용 권한

데이터베이스 만들기 또는 배포 권한

데이터베이스를 만들거나 배포하려면 다음과 같은 권한이 있어야 합니다.

작업

필요한 권한

데이터베이스 개체 및 설정 가져오기

소스 데이터베이스에 연결할 수 있어야 합니다.

  • 소스 데이터베이스가 SQL Server 2005를 기반으로 하는 경우 각 개체에 대한 VIEW DEFINITION 권한도 필요합니다.

  • 소스 데이터베이스가 SQL Server 2008을 기반으로 하는 경우 각 개체에 대한 VIEW DEFINITION 권한도 있어야 합니다. 로그인에는 데이터베이스 암호화 키에 대한 VIEW SERVER STATE 권한이 있어야 합니다.

서버 개체 및 설정 가져오기

지정된 서버의 "마스터" 데이터베이스에 연결할 수 있어야 합니다.

  • 서버에서 SQL Server 2005를 실행하는 경우에는 해당 서버에 대한 VIEW ANY DEFINITION 권한이 있어야 합니다.

  • 소스 데이터베이스가 SQL Server 2008을 기반으로 하는 경우 서버에 대한 VIEW ANY DEFINITION 권한이 있어야 합니다. 로그인에는 데이터베이스 암호화 키에 대한 VIEW SERVER STATE 권한이 있어야 합니다.

데이터베이스 프로젝트 만들기 또는 업데이트

데이터베이스 권한 없이도 데이터베이스 프로젝트를 만들거나 수정할 수 있습니다.

새 데이터베이스 배포 또는 항상 데이터베이스 다시 만들기 옵션 집합을 사용하여 배포

CREATE DATABASE 권한을 가지고 있거나 대상 서버에서 dbcreator 역할의 멤버여야 합니다.

데이터베이스를 만들면 Visual Studio에서는 model 데이터베이스에 연결하고 해당 내용을 복사합니다. 대상 데이터베이스에 연결하는 데 사용하는 초기 로그인(예: yourLogin)에는 db_creator 및 CONNECT SQL 권한이 있어야 합니다. 이 로그인에는 model 데이터베이스에 대한 사용자 매핑이 있어야 합니다. sysadmin 권한이 있는 경우 다음 Transact-SQL 문을 실행하여 매핑을 만들 수 있습니다.

USE [model]
CREATE USER yourUser FROM LOGIN yourLogin

사용자(이 예제의 경우 yourUser)에게는 model 데이터베이스에 대한 CONNECT 및 VIEW DEFINITION 권한이 있어야 합니다. sysadmin 권한이 있는 경우 다음 Transact-SQL 문을 실행하여 이러한 권한을 부여할 수 있습니다.

USE [model]
GRANT CONNECT to yourUser
GRANT VIEW DEFINITION TO yourUser

기본적으로 사용되는 CheckNewContraints 옵션이 설정된 상태에서 이름이 지정되지 않은 제약 조건이 포함된 데이터베이스를 배포하려면 db_owner 또는 sysadmin 권한이 있어야 하며 이러한 권한이 없으면 배포가 실패합니다. 이는 이름이 지정되지 않은 제약 조건의 경우에만 적용됩니다. CheckNewConstraints 옵션에 대한 자세한 내용은 데이터베이스 프로젝트 설정 개요를 참조하십시오.

기존 데이터베이스에 업데이트 배포

유효한 데이터베이스 사용자여야 합니다. 또한 db_ddladmin 역할의 멤버이거나 스키마를 소유하거나 대상 데이터베이스에서 만들거나 수정하려는 개체를 소유해야 합니다. 배포 전이나 배포 후 스크립트에서 로그인이나 연결된 서버 등 고급 개념의 작업을 수행하려면 추가 권한이 필요합니다.

중요중요
마스터 데이터베이스에 배포하는 경우에는 배포할 서버에 대한 VIEW ANY DEFINITION 권한도 있어야 합니다.

데이터베이스 프로젝트에서 EXTERNAL_ACCESS 옵션이 있는 어셈블리 사용

데이터베이스 프로젝트에 대해 TRUSTWORTHY 속성을 설정해야 합니다. SQL Server 로그인에 필요한 EXTERNAL ACCESS ASSEMBLY 권한이 있어야 합니다.

새 데이터베이스 또는 기존 데이터베이스에 어셈블리 배포

대상 배포 서버에서 sysadmin 역할의 멤버여야 합니다.

자세한 내용은 SQL Server 2005 온라인 설명서 또는 SQL Server 2008 온라인 설명서를 참조하십시오.

데이터베이스 리팩터링 권한

데이터베이스 리팩터링은 데이터베이스 프로젝트 내에서만 발생합니다. 데이터베이스 프로젝트를 사용할 권한이 있어야 합니다. 대상 데이터베이스에 변경 내용을 배포할 때까지 대상 데이터베이스에 대한 권한은 필요하지 않습니다.

데이터베이스에서 단위 테스트 수행 권한

데이터베이스에서 단위 테스트를 수행하려면 다음과 같은 권한이 있어야 합니다.

작업

필요한 권한

테스트 작업 실행

실행 컨텍스트 데이터베이스 연결을 사용해야 합니다. 자세한 내용은 연결 문자열 및 권한 개요를 참조하십시오.

테스트 전이나 테스트 후 작업 실행

권한 있는 컨텍스트 데이터베이스 연결을 사용해야 합니다. 이 데이터베이스 연결에는 실행 컨텍스트 연결이 갖는 권한보다 더 많은 권한이 있습니다.

TestInitialize 및 TestCleanup 스크립트 실행

권한 있는 컨텍스트 데이터베이스 연결을 사용해야 합니다.

테스트를 실행하기 전에 데이터베이스 변경 내용 배포

권한 있는 컨텍스트 데이터베이스 연결을 사용해야 합니다. 자세한 내용은 방법: 데이터베이스 단위 테스트 실행 구성을 참조하십시오.

테스트를 실행하기 전 데이터 생성

권한 있는 컨텍스트 데이터베이스 연결을 사용해야 합니다. 자세한 내용은 방법: 데이터베이스 단위 테스트 실행 구성을 참조하십시오.

데이터 생성 권한

데이터 생성기를 사용하여 테스트 데이터를 생성하려면 대상 데이터베이스의 개체에 대한 INSERT 및 SELECT 권한이 있어야 합니다. 데이터를 생성하기 전에 데이터를 제거할 경우 대상 데이터베이스의 개체에 대한 DELETE 권한도 있어야 합니다. 테이블의 IDENTITY 열을 다시 설정하려면 테이블을 소유하고 있거나 db_owner 또는 db_ddladmin 역할의 멤버여야 합니다.

스키마 및 데이터 비교 권한

스키마 또는 데이터를 비교하려면 다음과 같은 권한이 있어야 합니다.

작업

필요한 권한

두 데이터베이스의 스키마 비교

데이터베이스 만들기 또는 배포 권한에서 설명한 대로 데이터베이스에서 개체 및 설정을 가져올 수 있는 권한이 있어야 합니다.

데이터베이스와 데이터베이스 프로젝트의 스키마 비교

데이터베이스 만들기 또는 배포 권한에서 설명한 대로 데이터베이스에서 개체 및 설정을 가져올 수 있는 권한이 있어야 합니다. 또한 데이터베이스 프로젝트를 Visual Studio에서 열어야 합니다.

대상 데이터베이스에 업데이트 쓰기

데이터베이스 만들기 또는 배포 권한에서 설명한 대로 대상 데이터베이스에 업데이트를 배포할 수 있는 권한이 있어야 합니다.

두 데이터베이스의 데이터 비교

두 데이터베이스의 스키마 비교에 필요한 권한 이외에 비교하려는 모든 테이블에 대해 SELECT 권한도 있어야 합니다.

자세한 내용은 Microsoft 웹 사이트의 SQL Server 2008 온라인 설명서 또는 SQL Server 2005 온라인 설명서 페이지를 참조하십시오.

Transact-SQL 편집기 실행 권한

Transact-SQL 편집기 내에서 수행할 수 있는 작업은 대상 데이터베이스에 대한 실행 컨텍스트에 따라 달라집니다.

SQL CLR(SQL Server 공용 언어 런타임) 프로젝트에 대한 사용 권한

다음 표에서는 SQL CLR 프로젝트를 배포하거나 디버깅하려는 경우에 필요한 사용 권한을 보여 줍니다.

작업

필요한 권한

safe 권한 집합 어셈블리의 초기 또는 증분 배포

  • db_DDLAdmin - 이 사용 권한은 배포할 어셈블리 및 개체 형식에 대한 CREATE 및 ALTER 권한을 부여합니다.

  • 데이터베이스 수준 VIEW DEFINITION - 배포하는 데 필요합니다.

  • 데이터베이스 수준 CONNECT - 데이터베이스에 연결할 수 있는 권한을 부여합니다.

external_access 권한 집합 어셈블리 배포

  • db_DDLAdmin - 이 사용 권한은 배포할 어셈블리 및 개체 형식에 대한 CREATE 및 ALTER 권한을 부여합니다.

  • 데이터베이스 수준 VIEW DEFINITION - 배포하는 데 필요합니다.

  • 데이터베이스 수준 CONNECT - 데이터베이스에 연결할 수 있는 권한을 부여합니다.

또한 다음 조건이 충족되어야 합니다.

  • TRUSTWORTHY 데이터베이스 옵션이 ON으로 설정되어 있어야 합니다.

  • 배포하는 데 사용할 로그인에 EXTERNAL ACCESS ASSEMBLY 서버 권한이 있어야 합니다.

unsafe 권한 집합 어셈블리 배포

  • db_DDLAdmin - 이 사용 권한은 배포할 어셈블리 및 개체 형식에 대한 CREATE 및 ALTER 권한을 부여합니다.

  • 데이터베이스 수준 VIEW DEFINITION - 배포하는 데 필요합니다.

  • 데이터베이스 수준 CONNECT - 데이터베이스에 연결할 수 있는 권한을 부여합니다.

또한 다음 조건이 충족되어야 합니다.

  • TRUSTWORTHY 데이터베이스 옵션이 ON으로 설정되어 있어야 합니다.

  • 배포하는 데 사용할 로그인에 UNSAFE ASSEMBLY 서버 권한이 있어야 합니다.

SQL CLR 어셈블리 원격 디버깅

sysadmin 고정 역할 권한이 있어야 합니다.

중요

모든 경우에 어셈블리 소유자는 어셈블리를 배포하는 데 사용하고 있는 사용자 자격과 같거나 해당 사용자가 멤버로 포함된 역할이어야 합니다. 이 요구 사항은 배포하는 어셈블리에서 참조하는 모든 어셈블리에도 적용됩니다.

참고 항목

개념

Visual Studio에서 데이터베이스와 데이터 계층 응용 프로그램 만들기 및 관리

데이터베이스 팀 개발 시작