Як правило, вам слід чітко вказати dbo
схему, якщо ви хочете створити об'єкт у цій схемі.
Як ви є db_owner
, ваша схема за замовчуванням є dbo
, тому немає проблеми, коли ви не вказуєте dbo-схему під час створення об’єктів. Але для інших користувачів Windows це не те саме.
Ваші користувачі є членами програми, Windows group
яка не має схеми за замовчуванням. У цьому випадку відповідний користувач та схема створюються, коли користувач створює будь-який об’єкт, це документується тут: CREATE SCHEMA (Transact-SQL)
Неявна схема та створення користувачів
У деяких випадках користувач може використовувати базу даних, не маючи облікового запису користувача (основна база даних в базі даних). Це може статися в таких ситуаціях:
Логін має привілеї CONTROL SERVER.
Користувач Windows не має індивідуального облікового запису користувача (основна база даних у базі даних), але він отримує доступ до бази даних як член групи Windows, яка має обліковий запис користувача бази даних (головна база даних для групи Windows).
Коли користувач без облікового запису бази даних створює об'єкт, не вказуючи існуючу схему, головна база даних і схема за замовчуванням автоматично буде створена в базі даних для цього користувача. Основа та схема створених баз даних матимуть те саме ім’я, що і ім’я, яке користувач використовував під час підключення до SQL Server (ім'я для входу в систему автентифікації SQL Server або ім’я користувача Windows).
Така поведінка необхідна для того, щоб дозволити користувачам, які базуються на групах Windows, створювати та володіти об’єктами. Однак це може призвести до ненавмисного створення схем і користувачів. Щоб уникнути неявного створення користувачів та схем, коли це можливо, явно створюйте принципи бази даних та призначайте схему за замовчуванням. Або явно вказати існуючу схему під час створення об'єктів у базі даних, використовуючи імена двох або трьох частин.
Щоб вирішити проблему, просто призначте dbo
схему default schema
для всіх ваших користувачів-груп Windows або напишіть схему чітко під час створення об’єктів. Завжди.