Create schema (transact-sql)

Ім'я, по якому схема ідентифікується в даній базі даних.

Вказує ім'я учасника рівня бази даних, який є власником схеми. Цьому учаснику можуть належати і інші схеми, при цьому поточна схема може не використовуватися за замовчуванням.

Вказує інструкцію CREATE TABLE, яка створює таблицю всередині схеми. У учасника, що виконує цю інструкцію, має бути дозвіл CREATE TABLE в поточній базі даних.

Вказує інструкцію CREATE VIEW, яка створює уявлення всередині схеми. У учасника, що виконує цю інструкцію, має бути дозвіл CREATE VIEW в поточній базі даних.

Вказує інструкцію GRANT, яка надає дозволи на будь-який об'єкт, що захищається, за винятком нової схеми.

Вказує інструкцію REVOKE, яка скасовує дозволи на будь-який об'єкт, що захищається, за винятком нової схеми.

Вказує інструкцію DENY, яка забороняє дозволу на будь-який об'єкт, що захищається, за винятком нової схеми.

Інструкції, які містять CREATE SCHEMA AUTHORIZATION, але не вказують ім'я, дозволені тільки для зворотної сумісності.

Інструкція CREATE SCHEMA створює схему, що містяться в ній таблиці та подання, а також дозволу GRANT, REVOKE або DENY на будь-який об'єкт, що захищається в одній інструкції. Ця інструкція повинна виконуватися як окремий пакет. За допомогою інструкції CREATE SCHEMA об'єкти створюються всередині створюваної схеми.

Транзакції CREATE SCHEMA є атомарними. Якщо в процесі виконання інструкції CREATE SCHEMA виникають помилки, жоден із зазначених об'єктів, що захищаються не створюється і жодне дозвіл не надається.

Об'єкти, що захищають, які необхідно створити за допомогою інструкції CREATE SCHEMA, можуть бути перераховані в будь-якому порядку, за винятком уявлень, що посилаються на інші уявлення. В цьому випадку посилається подання має бути створено після того уявлення, на яке воно посилається.

Таким чином, за допомогою інструкції GRANT можна надавати дозволи на об'єкт ще до того, як він буде створений, а інструкція CREATE VIEW може з'являтися раніше інструкцій CREATE TABLE, що створюють таблиці, на які посилається уявлення. Крім того, інструкції CREATE TABLE можуть декларувати зовнішні ключі до таблиць, певним пізніше в інструкції CREATE SCHEMA.

В інструкціях CREATE SCHEMA підтримуються DENY і REVOKE. Пропозиції DENY і REVOKE будуть виконуватися в тій послідовності, в якій вони з'являються в інструкції CREATE SCHEMA.

Учасник, який виконує інструкцію CREATE SCHEMA, може вказати іншого учасника бази даних в якості власника створюваної схеми. Для цього необхідні додаткові дозволи, описані в підрозділі «Дозволи» далі в цьому розділі.

Власником схеми є один з наступних учасників рівня бази даних: користувач бази даних, роль бази даних, роль додатка. Об'єкти, які створюються в схемі, належать власнику схеми і мають значення NULL для principal_id в sys.objects. Володіння об'єктами, що містяться в схемі, можна передати будь-якому учаснику рівня бази даних, однак у власника схеми завжди залишається дозвіл CONTROL на об'єкти в схемі.

Якщо при створенні об'єкта бази даних вказати допустимого учасника домену (користувача або групу) як власника об'єкта, то цей учасник буде додано до бази даних в якості схеми. Нова схема буде належати цьому учаснику домену.

Повідомлення про старіння

Інструкції 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 створюються в одній інструкції.