Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 default schema, отличия в БД  [new]
teo609
Member

Откуда: Рязань
Сообщений: 105
Здравствуйте, господа инженеры.

Есть сервер Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64).
Есть две базы на нем, основная, и тестовая, периодически восстанавливаемая из основной.
Есть на сервере два логина и привязанные к ним две группы доменных пользователей, с виндовой авторизацией, редакторы и админы.
(Задать дефолтную схему этим логинам на вкладке User Mapping студия не дает - говорит не положено для групповой доменной авторизации)
В каждой базе есть два пользователя, редактор и админ, привязанных к этим логинам сервера.
В каждой базе есть Datebase Role roleAdmin, в которую входит пользователь базы админ.
В свойствах базы этой роли права CreateTable и CreateProcedure проставлены (галочками).

Группа редакторы есть давно, в ней часть пользователей домена, они давно работают без проблем.
Группа админы добавлена недавно, и сейчас тестируется.
Перед добавлением произошло очередное восстановление основной базы в тестовую, поэтому они практически идентичны.
Мой доменный логин состоит в обеих группах, и из приложения своего тестового я к базам подключаюсь им.

Пользователи работают в группе редакторы, и не создают ни таблиц ни ХП.
В админах я пока один юзер, и пытаюсь создать таблицу и ХП в тестовой функции.
Создаются они запросами, подобными тем, что я запускал от sa и они работали, создавали объекты в схеме dbo.

CREATE TABLE testTable (key_int int, bit_fld1 bit, ...)
CREATE PROC testProc1 @key_int int...

Штука в том, что одинаковые (во всем что могу проверить) базы реагируют на эти запросы по-разному.
В одной из них запросы выполняются.
При этом создается в Security\Users юзер названный как мой DomainName\UserLogin, и с таким же именем схема.
Как объекты этой схемы создаются и таблица и ХП.
В другой базе запрос на создание таблицы не выполняется с ошибкой The default schema does not exist.

Попытка выяснить в чем же разница между базами привела к сравнению их с помощью SqlSchemaCompare из MS Visual Studio 2015.
Никакой особой разницы между базами таким способом не выявлено.
В той базе, в которой запросы выполнялись, у схемы есть свойство Authorizer, в GUI нигде такого не видел.
(картинка)

Вопрос в том, как лучше реализовать возможность создавать таблицы для админов.
Чтобы создавался при этом для каждого из них свой пользователь DomainName\UserLogin в Security\Users - не хочется, некрасиво.
Правильно ли создавать таблицы в схеме dbo, можно ли этого добиться.

Вопросы эти не степени жизни и смерти, тестовые таблицы и ХП можно создать и держать в базах постоянно.
Но интересно, как сделать лучше, что логичнее с точки зрения сервера.

К сообщению приложен файл. Размер - 19Kb
30 апр 19, 13:26    [21875494]     Ответить | Цитировать Сообщить модератору
 Re: default schema, отличия в БД  [new]
aleks222
Member

Откуда:
Сообщений: 592
The default schema does not exist

Не, просто посмотреть дефолтную схему пользователя - это слишком просто.
30 апр 19, 14:52    [21875597]     Ответить | Цитировать Сообщить модератору
 Re: default schema, отличия в БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6394
teo609,

автор
При этом создается в Security\Users юзер названный как мой DomainName\UserLogin, и с таким же именем схема.


Если при создании пользователя не укажете явно схему по умолчанию, то так и будет.
30 апр 19, 16:51    [21875745]     Ответить | Цитировать Сообщить модератору
 Re: default schema, отличия в БД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28333
teo609
Правильно ли создавать таблицы в схеме dbo
Правильно.
teo609
можно ли этого добиться.
Лучше всего указывать схему явно.
То есть не CREATE TABLE testTable ..., а CREATE TABLE dbo.testTable ...
30 апр 19, 17:56    [21875818]     Ответить | Цитировать Сообщить модератору
 Re: default schema, отличия в БД  [new]
teo609
Member

Откуда: Рязань
Сообщений: 105
alexeyvg
CREATE TABLE dbo.testTable ...


Спасибо.

Попробовал так, и вышел на то, что надо дать права бд-роли на схему dbo.

DB\Security\Schemas\dbo, Properties, Permissions, в верхний список внести нужную роль, в нижнем списке отметить нужные права.
13 май 19, 17:03    [21883585]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить