Схеми баз даних sql server 2018, поділ користувачів і схем

SELECT * FROM MyServer.MyDatabase.User1.Table1;

Якщо розробник використав в коді програми просто ім'я об'єкта (наприклад, SELECT * FROM Table1), то при підключенні до сервера з цього додатка від імені іншого користувача могли виникнути проблеми, оскільки замість User1 підставлялося поточне ім'я користувача (а якщо об'єкт з таким повним ім'ям не був виявлений, то ім'я спеціального користувача DBO).

SELECT * FROM MyServer.MyDatabase.Schema1.Table1;

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

Користувачеві можна призначити схему за замовчуванням. У цю схему SQL Server буде за замовчуванням поміщати об'єкти, які створює цей користувач. Крім того, шукати об'єкти, до яких звертається користувач (наприклад, в разі запиту виду SELECT * FROM Table1), SQL Server також буде в першу чергу в його схемі за замовчуванням.

Застосування схеми дає ряд додаткових переваг у порівнянні зі старим підходом:

q декільком користувачам можна призначити одну і ту ж схему за замовчуванням, що може бути зручно при розробці додатків;

q кілька користувачів (через групи Windows або ролі баз даних) можуть володіти однією і тією ж схемою. При цьому один користувач може бути власником відразу кількох схем;

q при видаленні користувача з бази даних не доведеться перейменовувати його об'єкти;

q як уже говорилося, спрощується надання дозволів для наборів об'єктів в базі даних.

Створення схеми проводиться з контейнера Імя_бази_данних | Security | Schemas в Management Studio або за допомогою команди CREATE SCHEMA.