Схемы - это контейнеры объектов, которые позволяют группировать объекты базы данных

В SQL Server 2005 объект базы данных называется именем, состоящим из четырех компонентов следующей структуры:

<Server>.<Database >.<Schema>.< Object>

Схемы базы данных можно создавать при помощи инструкции CREATE SCHEMA.

Создавая схему, можно создать объекты базы данных и назначить разрешения в пределах одной транзакции, которая вызывается инструкцией CREATE SCHEMA.

Пример: создает схему с именем Accounting, назначает пользователя Peter владельцем схемы и создает таблицу с именем Invoices. Также предоставляется разрешение select роли базы данных public. Обратите внимание на двухкомпонентное имя, которое используется для обращения к таблице в текущей базе данных.

USE AdventureWorks;

GO

--Создаем схему Accounting с владельцем Peter.

CREATE SCHEMA Accounting

AUTHORIZATION Peter;

GO

--Создаем таблицу Invoices в схеме Accounting.

CREATE TABLE Accounting.Invoices (

InvoiceID int,

InvoiceDate smalldatetime,

ClientID int);

GO

--Предоставляем разрешение SELECT на новую таблицу роли public.

GRANT SELECT ON Accounting.Invoices

TO public; GO

--Добавляем строку данных в новую таблицу.

INSERT INTO Accounting.Invoices

VALUES (101,getdate(),102);

Информацию о схемах можно получить, выполнив запрос к представлению каталога sys.schemas:

SELECT * FROM sys.schemas;

Удалить схему можно при помощи инструкции DROP SCHEMA. В SQL Server 2005 не допускается удаление схемы, если в схеме есть объекты.

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

USE AdventureWorks;

GO

--Извлекаем информацию о схеме Accounting.

SELECT s.name AS ‘Schema’, o.name AS ‘Object’

FROM sys.schemas AS s INNER JOIN sys.objects AS o ON s.schema_id=o.schema_id WHERE s.name='Accounting';

GO

--Удаляем таблицу Invoices из схемы Accounting.

DROP TABLE Accounting.Invoices;

GO

--Удаляем схему Accounting.

DROP SCHEMA Accounting;

Использование схемы по умолчанию. Когда приложение ссылается на объект базы данных, не уточняя схемы, SQL Server осуществляет попытку найти объект в схеме, заданной для текущего пользователя по умолчанию. Если объект не содержится в схеме по умолчанию, SQL Server пытается обнаружить объект в схеме dbo.

Пример демонстрирует, как создать схему и назначить ее в качестве схемы по умолчанию для пользователя.

--Создаем имя входа SQL Server в данном экземпляре SQL Server.

CREATE LOGIN Viktor

WITH PASSWORD='22061946'; GO

--Изменяем контекст соединения на базу данных AdventureWorks.

USE AdventureWorks;

GO

--Создаем пользователя Viktor в базе данных AdventureWorks и сопоставляем этого пользователя имени входа Viktor

CREATE USER Viktor

FOR LOGIN Viktor;

GO

--Создаем схему Marketing5

CREATE SCHEMA Marketing5

GO

--Создаем таблицу Campaigns в только что созданной схеме.

CREATE TABLE Marketing.Campaigns (

CampaignID int, CampaignDate smalldatetime, Description varchar (max)); GO

--Предоставляем разрешение SELECT пользователю Viktor на новую таблицу.

GRANT SELECT ON Marketing.Campaigns TO Viktor;

GO

--Объявляем схему Marketing схемой по умолчанию для пользователя Viktor

ALTER USER Viktor

WITH DEFAULT_SCHEMA=Marketing;

Если войти под именем Viktor в SQL Server и пытаться добавить запись, то выдается ошибка (пользователю Viktor предоставлено разрешение SELECT на таблицу Marketing.Campaigns).

Задания для самостоятельного выполнения:

1. В Интерфейсе SQL Server Management Studio создать имя входа (имя и пароль).

2. В Transact-SQL создать имя входа (имя и пароль). Получить информацию об именах входа SQL Server из представления каталога sys.sql_logins.

3. В Интерфейсе SQL Server Management Studio назначить одной из созданных учетных записей (имя входа) фиксированную серверную роль (dbcreator).

4. В Transact-SQL назначить одной из созданных учетных записей (имя входа) фиксированную серверную роль. Проверить, принадлежит ли имя входа заданной серверной роли (запрос системной функции IS_SRVROLEMEMBER).

5. В Transact-SQL последовательно отключить и включить одну из созданных учетных записей. Проверить, отключение и включение имени входа (запрос к представлению каталога sys.sql_logins).

6. Предоставить разрешение на вашу базу данных одной из созданных учетных записей в SQL Server Management Studio. Задать принадлежность к фиксированной роли базы данных.

7. Предоставить разрешение на вашу базу данных одной из созданных учетных записей в Transact-SQL. Проверить, имеет ли имя входа доступ к базе данных. Задать в Transact-SQL принадлежность к фиксированной роли базы данных.

8. В Интерфейсе SQL Server Management Studio для одного из имен входа задать гранулярные разрешения на столбцы одной из таблиц вашей базы данных. Проверить работу заданных разрешений.

9. В Transact-SQL последовательно предоставить и отменить для одного из имен входа гранулярные разрешения (использовать GRANT, DENY и REVOKE). Проверить работу заданных разрешений.

10. В Интерфейсе SQL Server Management Studio удалить одно из имен входа.

11. В Transact-SQL удалить одно из имен входа.

Создать отчет в Word, содержащий по каждому заданию операторы Transact-SQL описанием параметров запроса или последовательность действий SQL Server Management Studio, а также результаты проверки выполнения заданий.


[1] BULK INSERT - выполняет импорт файла данных в таблицу или представление базы данных в формате, указанном пользователем.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: