Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
конечной точке аналитики платформы Аналитики Azure Synapse Analytics
(PDW)
в Microsoft Fabric
Хранилище в Microsoft Fabric
Создает схему в текущей базе данных. Транзакция CREATE SCHEMA
также может создавать таблицы и представления в новой схеме, а также задавать DENY
GRANT
или REVOKE
разрешения для этих объектов.
Соглашения о синтаксисе Transact-SQL
Синтаксис
Синтаксис ДЛЯ SQL Server и База данных SQL Azure.
CREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ]
<schema_name_clause> ::=
{
schema_name
| AUTHORIZATION owner_name
| schema_name AUTHORIZATION owner_name
}
<schema_element> ::=
{
table_definition | view_definition | grant_statement |
revoke_statement | deny_statement
}
Синтаксис для Azure Synapse Analytics и параллельного хранилища данных.
CREATE SCHEMA schema_name [ AUTHORIZATION owner_name ] [;]
Аргументы
schema_name
Указывает имя схемы в базе данных.
OWNER_NAME АВТОРИЗАЦИИ
Указывает имя участника уровня базы данных, который является владельцем схемы. Этот субъект может принадлежать другим схемам и не может использовать текущую схему в качестве схемы по умолчанию.
table_definition
Указывает инструкцию CREATE TABLE
, которая создает таблицу в схеме. Субъект, выполняющий эту инструкцию, должен иметь CREATE TABLE
разрешение на текущую базу данных.
view_definition
Указывает инструкцию CREATE
VIEW, которая создает представление в схеме. Субъект, выполняющий эту инструкцию, должен иметь CREATE
разрешение VIEW для текущей базы данных.
grant_statement
Указывает инструкцию GRANT
, которая предоставляет разрешения для любого защищаемого объекта, кроме новой схемы.
revoke_statement
Указывает инструкцию REVOKE
, которая отменяет разрешения на любой защищаемый объект, кроме новой схемы.
deny_statement
Указывает инструкцию DENY
, которая запрещает разрешения для любого защищаемого объекта, кроме новой схемы.
Замечания
Инструкции, содержащие CREATE SCHEMA AUTHORIZATION
, но не указывающие имя, разрешены только для обратной совместимости. Инструкция не приводит к ошибке, но не создает схему.
CREATE SCHEMA
может создать схему, таблицы и представления, содержащиеся в ней, и , REVOKE
или GRANT
DENY
разрешения на любой защищаемый объект в одной инструкции. Эту инструкцию необходимо выполнить как отдельный пакет. Объекты, созданные инструкцией CREATE SCHEMA
, создаются внутри создаваемой схемы.
CREATE SCHEMA
транзакции являются атомарными. Если во время выполнения инструкции CREATE SCHEMA
возникает какая-либо ошибка, ни одна из указанных защищаемых объектов не создается, и разрешения не предоставляются.
Вы можете перечислить защищаемые объекты, созданные в любом порядке, за исключением представлений, ссылающихся CREATE SCHEMA
на другие представления. В этом случае ссылающееся представление должно быть создано после того представления, на которое оно ссылается.
Таким образом, GRANT
инструкция может предоставить разрешение на объект перед созданием объекта или CREATE VIEW
оператор может появиться перед CREATE TABLE
операторами, которые создают таблицы, на которые ссылается представление. Кроме того, CREATE TABLE
операторы могут объявлять внешние ключи таблицам, определенным далее в инструкции CREATE SCHEMA
.
Примечание.
DENY
и REVOKE
поддерживаются внутри CREATE SCHEMA
инструкций.
DENY
и REVOKE
предложения выполняются в порядке, в котором они отображаются в инструкции CREATE SCHEMA
.
Субъект, который выполняется CREATE SCHEMA
, может указать другой субъект базы данных в качестве владельца создаваемой схемы. Для этого действия требуются дополнительные разрешения, как описано в разделе "Разрешения " далее в этой статье.
Новая схема принадлежит одному из следующих участников уровня базы данных: пользователю базы данных, роли базы данных или роли приложения. Объекты, созданные в схеме, принадлежат владельцу схемы и имеют значение NULL principal_id
sys.objects
. Вы можете передать владение объектами, содержащимися в схеме, на любой субъект уровня базы данных, но владелец схемы всегда сохраняет CONTROL
разрешение на объекты в схеме.
Примечание.
Схемы не эквивалентны пользователям базы данных. Используйте представления системного каталога для выявления различий между пользователями базы данных и схемами.
Неявная схема и создание пользователя
Примечание.
Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).
В некоторых случаях пользователь может использовать базу данных без учетной записи пользователя базы данных (субъект базы данных в базе данных). Это условие может произойти в следующих ситуациях:
Имя входа имеет
CONTROL SERVER
привилегии.Пользователь Windows не имеет отдельную учетную запись пользователя базы данных (субъект базы данных в базе данных), но обращается к базе данных в качестве члена группы Windows с учетной записью пользователя базы данных (субъект базы данных для группы Windows).
Пользователь Microsoft Entra не имеет отдельную учетную запись пользователя базы данных (субъект базы данных в базе данных), но обращается к базе данных в качестве члена группы Microsoft Entra с учетной записью пользователя базы данных (субъект базы данных для группы Microsoft Entra).
Если пользователь без учетной записи пользователя базы данных создает объект без указания существующей схемы, субъект базы данных и схема по умолчанию создаются в базе данных автоматически для этого пользователя. Созданный субъект базы данных и схема имеют то же имя, что и имя пользователя, используемого при подключении к SQL Server (имя входа для проверки подлинности SQL Server или имя пользователя Windows).
Данное поведение необходимо, чтобы позволить пользователям, базирующимся в группах Windows, создавать и обладать объектами. Однако это может привести к непреднамеренным созданию схем и пользователей. Во избежание неявного создания пользователей и схем каждый раз, при возможности, явно создавайте субъекты базы данных и назначайте схему по умолчанию. Или явно выражайте существующую схему при создании объектов в базе данных, используя двух- или трехчастные имена объектов.
Неявное создание пользователя Microsoft Entra невозможно в базе данных SQL. Так как создание пользователя Microsoft Entra из внешнего поставщика должно проверить состояние пользователя в идентификаторе Microsoft Entra, создание пользователя завершается ошибкой 2760: А затем ошибка 2759: The specified schema name "<user@domain>" either does not exist or you do not have permission to use it.
CREATE SCHEMA failed due to previous errors.
Попытки создания или изменения схем приводят к ошибке 15151: Cannot find the user '', because it does not exist or you do not have permission.
за ним также следует ошибка 2759. Чтобы обойти эти ошибки, создайте пользователя Microsoft Entra из внешнего поставщика или измените группу Microsoft Entra, чтобы назначить схему по умолчанию. Затем повторно запустите инструкцию, создав объект.
В конечной точке аналитики SQL и хранилище в Microsoft Fabric имена схем не могут содержать или /
заканчиваться \
ими.
.
Уведомление об устаревании
CREATE SCHEMA
Операторы, которые не указывают имя схемы, в настоящее время поддерживаются для обратной совместимости. Эти инструкции не создают схему в базе данных, но создают таблицы и представления и предоставляют разрешения. Субъекты не нуждаются CREATE SCHEMA
в разрешении на выполнение этой более ранней CREATE SCHEMA
формы, так как схема не создается. Эта функция будет удалена в одном из будущих выпусков SQL Server.
Разрешения
Необходимо разрешение CREATE SCHEMA
на базу данных.
Чтобы создать объект, указанный в инструкции CREATE SCHEMA
, пользователь должен иметь соответствующее CREATE
разрешение.
Чтобы указать другого пользователя в качестве владельца создаваемой схемы, вызывающий объект должен иметь IMPERSONATE
разрешение на этот пользователь. Если роль базы данных указана как владелец, вызывающий объект должен иметь одно из следующих элементов: членство в роли или ALTER
разрешение на роль.
Для синтаксиса с обратной совместимостью не проверяются разрешения CREATE SCHEMA
, так как схема не создается.
Примеры
А. Создание схемы и предоставление разрешений
В следующем примере создается схема Sprockets
, принадлежащая Annik
, которая содержит таблицу NineProngs
. Инструкция предоставляет разрешение SELECT
для Mandar
и запрещает SELECT
для Prasanna
.
Sprockets
и NineProngs
создаются в одной инструкции.
USE AdventureWorks2022;
GO
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
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
В. Создание схемы и таблицы в схеме
В следующем примере создается схема Sales
, а затем таблица Sales.Region
.
CREATE SCHEMA Sales;
GO
CREATE TABLE Sales.Region
(
Region_id INT NOT NULL,
Region_Name CHAR (5) NOT NULL
)
WITH (DISTRIBUTION = REPLICATE);
GO
В. Настройка владельца схемы
В следующем примере создается Production
схема и устанавливается Mary
в качестве владельца.
CREATE SCHEMA Production AUTHORIZATION [Contoso\Mary];
GO