Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы АД.docx
Скачиваний:
16
Добавлен:
19.12.2018
Размер:
516.23 Кб
Скачать

10 Пользователь и схема

В SQL Server 2000 и в более старых версиях объект пользователя базы данных нес на себе двойную нагрузку: во-первых, он использовался для предоставления разрешений в базе данных, а, во-вторых, имя пользователя базы данных использовалось для идентификации объектов. Например, обращение к таблице по полному ее имени могло выглядеть так:

SELECT * FROM MyServer.MyDatabase.User1.Table1;

Если разработчик использовал в коде приложения просто имя объекта (например, SELECT * FROM Table1), то при подключении к серверу из этого приложения от имени другого пользователя могли возникнуть проблемы, поскольку вместо User1 подставлялось текущее имя пользователя (а если объект с таким полным именем не был обнаружен, то имя специального пользователя DBO).

В SQL Server 2005 эти две функции разделены. Для предоставления разрешений в базе данных, как и раньше, используется объект пользователя, а для именования объектов в базе данных используется специальный объект схемы. Запрос с использованием полного формата имени в SQLServer 2005 теперь должен выглядеть так:

SELECT * FROM MyServer.MyDatabase.Schema1.Table1;

Схема формально определяется как набор объектов в базе данных, объединенных общим пространством имен. Проще всего представить себе схему как некий логический контейнер в базе данных, которому могут принадлежать таблицы, представления, хранимые процедуры, пользовательские функции, ограничения целостности, пользовательские типы данных и другие объекты базы данных. Этот контейнер удобно использовать как для именования объектов и их логической группировки, так и для предоставления разрешений. Например, если в базе данных есть набор таблиц с финансовой информацией, удобно поместить их в одну схему и предоставлять пользователям разрешения на эту схему (т. е. на этот набор таблиц).

Пользователю можно назначить схему по умолчанию. В эту схему SQL Server будет по умолчанию помещать объекты, которые создает этот пользователь. Кроме того, искать объекты, к которым обращается пользователь (например, в случае запроса вида SELECT * FROM Table1), SQL Serverтакже будет в первую очередь в его схеме по умолчанию.

Применение схемы дает ряд дополнительных преимуществ по сравнению со старым подходом:

-      нескольким пользователям можно назначить одну и ту же схему по умолчанию, что может быть удобно при разработке приложений;

-      несколько пользователей (через группы Windows или роли баз данных) могут владеть одной и той же схемой. При этом один пользователь может являться владельцем сразу нескольких схем;

-      при удалении пользователя из базы данных не придется переименовывать его объекты;

-      как уже говорилось, упрощается предоставление разрешений для наборов объектов в базе данных.

Создание схемы производится из контейнера Имя_базы_данных | Security | Schemas в Management Studio или при помощи команды CREATE SCHEMA.

11 Создание, изменение и удаление пользователей базы данных

Создание пользователей баз данных SQL Server 2005, CREATE USER, свойства пользователей

Создать пользователя базы данных можно:

-      на графическом экране из контейнера Имя_базы_данных | Security | Users в Management Studio;

-      при помощи команды CREATE USER (хранимая процедура sp_adduser, которая использовалась для этой цели в предыдущих версиях SQL Server, оставлена только для обеспечения обратной совместимости). Например, команда на создание пользователя User1, которому будет соответствовать логин SQL Server Login1 со схемой по умолчанию dbo, может выглядеть так:

CREATE USER User1 FOR LOGIN Login1 WITH DEFAULT_SCHEMA = dbo;

При создании пользователя вам нужно будет указать:

-      имя пользователя (User name), к которому применяются те же правила, что и для других объектов SQL Server;

-      логин (SQL Server или Windows), которой будет назначен пользователю этой базы данных. После создания пользователя назначенный ему логин изменять будет нельзя. Можно создать пользователя, которому не будет назначен никакой логин (при помощи переключателя Withoutlogin). Такому пользователю уже не получится назначить логин. Пользователи этого типа — без логинов — используются только для дополнительной настройки безопасности в Service Broker. Отметим также, что если какой-то логин уже был назначен пользователю, то другому пользователю одновременно назначить его нельзя;

-      сертификат (Certificate name) или асимметричный ключ (Key name);

-      схему по умолчанию (Default schema);

-      для каких схем этот пользователь будет являться владельцем (Owned schemas);

-      какие роли базы данных (Database roles) будут ему назначены.

Обязательных параметра всего два — имя пользователя и логин.

На вкладке Securables пользователю можно сразу же предоставить разрешения на объекты базы данных. Речь о предоставлении разрешений пойдет в следующих разделах. Вкладка Extended Properties позволяет определить дополнительные пользовательские свойства для данного объекта. Применяются они для тех же целей, что и расширенные свойства баз данных (см. разд. 4.8).

Изменение свойств пользователя и его удаление производится из того же контейнера в Management Studio, что и создание пользователя, а также при помощи команд ALTER USER/DROP USER. Удалить пользователя, владеющего какими-либо объектами в базе данных, нельзя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]