다음을 통해 공유


데이터베이스 스키마 만들기

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

이 문서에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 스키마를 만드는 방법에 대해 설명합니다.

제한 사항

  • 새 스키마는 데이터베이스 수준 보안 주체인 데이터베이스 사용자, 데이터베이스 역할 또는 애플리케이션 역할 중 하나가 소유합니다. 스키마 내에서 만든 개체는 스키마 소유자가 소유하며 sys.objectsprincipal_id가 NULL입니다. 스키마 포함 개체의 소유권을 모든 데이터베이스 수준 보안 주체에게 이전할 수 있지만 스키마 소유자는 항상 스키마 내의 개체에 대한 CONTROL 권한을 갖고 있어야 합니다.

  • 데이터베이스 개체를 만들 때 유효한 도메인 보안 주체(사용자 또는 그룹)를 개체 소유자로 지정하면 도메인 보안 주체가 데이터베이스에 스키마로 추가됩니다. 새 스키마는 해당 도메인 보안 주체가 소유합니다.

사용 권한

  • 데이터베이스에 대한 CREATE SCHEMA 권한이 필요합니다.

  • 다른 사용자를 생성되는 스키마의 소유자로 지정하려면 호출자에게 해당 사용자에 대한 IMPERSONATE 권한이 있어야 합니다. 데이터베이스 역할을 소유자로 지정하는 경우 호출자에게 해당 역할의 구성원 자격이나 해당 역할에 대한 ALTER 권한 중 하나의 조건을 충족해야 합니다.

SQL Server Management Studio를 사용하여 스키마 만들기

  1. 개체 탐색기에서 데이터베이스 폴더를 확장합니다.

  2. 새 데이터베이스 스키마를 만들 데이터베이스를 확장합니다.

  3. 보안 폴더를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 후 스키마를 선택합니다.

  4. 스키마 - 신규 대화 상자의 일반 페이지에서 스키마 이름 상자에 새 스키마의 이름을 입력합니다.

  5. 스키마 소유자 상자에 스키마를 소유할 데이터베이스 사용자 또는 역할의 이름을 입력합니다. 또는 검색을 선택하여 역할 및 사용자 검색 대화 상자를 엽니다.

  6. 확인을 선택합니다.

참고 항목

Azure SQL Database 또는 Azure Synapse Analytics에 대해 SSMS를 사용하여 스키마를 만드는 경우에는 대화 상자가 표시되지 않습니다. 생성된 스키마 템플릿 T-SQL 문 만들기 를 실행해야 합니다.

추가 옵션

또한 스키마 – 새로 만들기 대화 상자는 두 개의 추가 페이지인 권한확장 속성에서 옵션을 제공합니다.

  • 권한 페이지에는 가능한 모든 보안 개체와 로그인에 부여할 수 있는 해당 보안 개체에 대한 권한이 나열됩니다.

  • 확장 속성 페이지에서 데이터베이스 사용자에게 사용자 지정 속성을 추가할 수 있습니다.

Transact-SQL을 사용하여 스키마 만들기

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 선택합니다.

  3. 다음 예제에서는 Chains라는 스키마를 만든 다음 Sizes라는 테이블을 만듭니다.

    CREATE SCHEMA Chains;
    GO
    CREATE TABLE Chains.Sizes (ChainID int, width dec(10,2));
    
  4. 추가 옵션은 단일 문으로 수행할 수 있습니다. 다음 예제에서는 Sprockets가 소유하고 테이블 Joe을 포함하는 스키마 NineProngs를 만듭니다. 이 문에서는 SELECT에게 Bob 권한을 부여하고 SELECT에게는 John 권한을 거부합니다.

    CREATE SCHEMA Sprockets AUTHORIZATION Joe
        CREATE TABLE NineProngs (source int, cost int, partnumber int)
        GRANT SELECT ON SCHEMA::Sprockets TO Bob
        DENY SELECT ON SCHEMA::Sprockets TO John;
    GO
    
  5. 다음 문을 실행하여 현재 데이터베이스에서 스키마를 봅니다.

    SELECT * FROM sys.schemas;