Как правило, вы должны явно указать 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 или напишите схему явно при создании объектов. Всегда.