---
title: "Create a Database Schema | Microsoft Docs"
description: Learn how to create a schema in SQL Server by using SQL Server Management Studio or Transact-SQL, including limitations and restrictions.
ms.custom: ""
ms.date: "07/05/2017"
ms.prod: sql
ms.prod_service: "database-engine, sql-database, sql-data-warehouse, pdw"
ms.reviewer: ""
ms.technology: security
ms.topic: conceptual
f1_keywords:
- "sql13.swb.schemas.general.f1"
helpviewer_keywords:
- "creating schemas with Management Studio"
- "CREATE SCHEMA [Management Studio]"
- "database schemas"
- "schemas [SQL Server], creating"
ms.assetid: ed2a5522-f4d2-4111-95a4-d3e1e5081739
author: VanMSFT
ms.author: vanto
monikerRange: ">=aps-pdw-2016||=azuresqldb-current||=azure-sqldw-latest||>=sql-server-2016||>=sql-server-linux-2017||=azuresqldb-mi-current"
---
# Create a Database Schema
[!INCLUDE [SQL Server](../../../includes/applies-to-version/sql-asdb-asdbmi-asa-pdw.md)]
This topic describes how to create a schema in [!INCLUDE[ssnoversion](../../../includes/ssnoversion-md.md)] by using [!INCLUDE[ssManStudioFull](../../../includes/ssmanstudiofull-md.md)] or [!INCLUDE[tsql](../../../includes/tsql-md.md)].
## Before You Begin
### Limitations and Restrictions
- The new schema is owned by one of the following database-level principals: database user, database role, or application role. Objects created within a schema are owned by the owner of the schema, and have a NULL **principal_id** in **sys.objects**. Ownership of schema-contained objects can be transferred to any database-level principal, but the schema owner always retains CONTROL permission on objects within the schema.
- When creating a database object, if you specify a valid domain principal (user or group) as the object owner, the domain principal is added to the database as a schema. The new schema is owned by that domain principal.
### Security
#### Permissions
- Requires CREATE SCHEMA permission on the database.
- To specify another user as the owner of the schema being created, the caller must have IMPERSONATE permission on that user. If a database role is specified as the owner, the caller must meet one of the following criteria: membership in the role or ALTER permission on the role.
## Using SQL Server Management Studio
##### To create a schema
1. In Object Explorer, expand the **Databases** folder.
2. Expand the database in which to create the new database schema.
3. Right-click the **Security** folder, point to **New**, and select **Schema**.
4. In the **Schema - New** dialog box, on the **General** page, enter a name for the new schema in the **Schema name** box.
5. In the **Schema owner** box, enter the name of a database user or role to own the schema. Alternately, click **Search** to open the **Search Roles and Users** dialog box.
6. [!INCLUDE[clickOK](../../../includes/clickok-md.md)]
> [!NOTE]
> A dialog box will not appear if you are creating a Schema using SSMS against an **Azure SQL Database** or an **Azure Synapse Analytics**. You will need to run the Create Schema Template T-SQL Statement that is generated.
### Additional Options
The **Schema- New** dialog box also offers options on two additional pages: **Permissions** and **Extended Properties**.
- The **Permissions** page lists all possible securables and the permissions on those securables that can be granted to the login.
- The **Extended properties** page allows you to add custom properties to database users.
## Using Transact-SQL
#### To create a schema
1. In **Object Explorer**, connect to an instance of [!INCLUDE[ssDE](../../../includes/ssde-md.md)].
2. On the Standard bar, click **New Query**.
3. The following example creates a schema named `Chains`, and then creates a table named `Sizes`.
```sql
CREATE SCHEMA Chains;
GO
CREATE TABLE Chains.Sizes (ChainID int, width dec(10,2));
```
4. Additional options can be performed in a single statement. The following example creates the schema `Sprockets` owned by Annik that contains table `NineProngs`. The statement grants `SELECT` to Mandar and denies `SELECT` to Prasanna.
```sql
CREATE SCHEMA Sprockets AUTHORIZATION Annik
CREATE TABLE NineProngs (source int, cost int, partnumber int)
GRANT SELECT ON SCHEMA::Sprockets TO Mandar
DENY SELECT ON SCHEMA::Sprockets TO Prasanna;
GO
```
5. Execute the following statement, to view the schemas in this database:
```sql
SELECT * FROM sys.schemas;
```
For more information, see [CREATE SCHEMA (Transact-SQL)](../../../t-sql/statements/create-schema-transact-sql.md).