Вопрос 23: Объекты безопасности уровня сервера и уровня БД. Понятие «Schema». Секционированные таблицы.


Объекты безопасности

К защищаемым объектам в области сервера относятся:

  • Имена входа;
  • Конечные точки;
  • Базы данных.

К защищаемым объектам в области БД относятся:

  • Пользователи;
  • Роли;
  • Роли приложений;
  • Сертификаты;
  • Симметричные ключи;
  • Асимметричные ключи;
  • Сборки;
  • Полнотекстовые каталоги;
  • События DDL;
  • Схемы.

Понятие "Schema"

Схема - пространство имен для объектов БД. Полное имя объекта в БД представлено в такой форме: сервер.база_данных.схема.объект.

БД AdventureWorks использует следующие схемы для организации объектов БД в пространстве имен: HumanResources, Person, Production, Purchasing, Sales. Например, таблица Employee в схеме HumanResources называется HumanResources.Employee.

Создание схемы производится с помощью инструкции CREATE SCHEMA^

CREATE SCHEMA schema_name | AUTHORIZATION owner_name | schema_name AUTHORIZATION owner_name
[table_definition | view_definition | grant_ statement | revoke_statement | deny_statement]

Аргументы команды:

  • schema_name - имя, по которому схема определяется в БД;
  • AUTHORIZATION owver_name - задаёт имя участника уровня БД, который будет владеть схемой;
  • table_definition - указывается иструкцию CREATE TABLE, которая позволяется создать таблицу в схеме;
  • view_definition - указывуает инструкцию CREATE VIEW, которая позволяется создать представление в схеме;
  • grant_ statement - указывает инструкцию GRANT, которая предоставляет разрешения на любой защищаемый объект, за исключением новой схемы.
  • revoke_statement - указывает инструкцию REVOKE, которая отменяет разрешения на любой защищаемый объект, за исключением новой схемы.
  • deny_statement - указывает инструкцию DENY, которая запрещает разрешения на любой защищаемый объект, за исключением новой схемы.

Следующий пример демонстрируется создание схемы с названием Marketing, владельцем которого является пользователь Lance, и таблицу в новой схеме с названием Promotions. Инструкция предоставляет разрешение SELECT на использование схемы для пользователя Don и отклоняет разрешение пользователя Erik.

CREATE SCHEMA Marketing AUTHORIZATION Lance
CREATE TABLE Promotions(
    source int,
    cost int
)
GRANT SELECT TO Don
DENY SELECT TO Erik

Инструкция ALTER SCHEMA перемещает объекты между разными схемами одной и той же базы данных. Инструкция ALTER SCHEMA имеет следующий синтаксис:

ALTER SCHEMA schema_name TRANSFER object_name

Пример: Здесь изменяется схема HumanResources базы данных AdventureWorks2012, перемещая в нее таблицу ContactType из схемы Person этой же базы данных. Инструкцию ALTER SCHEMA можно использовать для перемещения объектов между разными схемами только одной и той же базы данных. (Отдельные объекты в схеме можно изменить посредством инструкции ALTER TABLE или ALTER VIEW.)

ALTER SCHEMA HumanResources TRANSFER Person.ContactType;

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

DROP SCHEMA schema_name

Секционированные таблицы

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

Компоненты и основные понятия

  • Функция секционирования При секционировании таблицы сначала нужно определить правило, по которому данные будут разделяться на сегменты. Для сопоставления отдельных строк данных с разными сегментами служит функция секционирования. Строки данных могут сегментироваться по колонке любого типа, кроме следующих: text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), псевдонимы типов данных и пользовательские типы данных среды CLR. Однако функция секционирования должна распределять каждую строку данных только в одну секцию таблицы ; иными словами, в результате применения функции одна и та же строка не может принадлежать нескольким секциям одновременно.

В примере в первой функции ( Left_Partition ) значения 1, 10 и 100 размещаются соответственно в первой, второй и третьей секциях. Во второй функции ( Right_Partition ) эти значения размещаются во второй, третьей и четвертой секциях.

CREATE PARTITION FUNCTION Left_Partition (int) AS RANGE LEFT 
FOR VALUES (1,10,100)

CREATE PARTITION FUNCTION Right_Partition (int) AS RANGE RIGHT 
FOR VALUES (1,10,100)
  • Схема секционирования После создания функции секционирования и выбора способа разделения данных по секциям следует решить, где будет создаваться каждая секция в файловой системе. Для создания связи секций с их размещением в файловой системе используются схемы секционирования. Схемы секционирования управляют тем, каким образом отдельные секции хранятся на диске, путем использования файловых групп для размещения каждой секции на дисковой подсистеме.

Выполним присвоение файловых групп схеме секционирования. Сначала приведем пример размещения всех секций таблицы в одной файловой группе с именем PRIMARY.

CREATE PARTITION SCHEME Primary_Left_Scheme
AS PARTITION Left_Partition 
      ALL TO ([PRIMARY])

Чтобы разместить все секции в различных файловых группах, нужно выполнить следующую команду:

CREATE PARTITION SCHEME Different_Left_Scheme
AS PARTITION Left_Partition 
      TO (Filegroup1, Filegroup2, Filegroup3, Filegroup4)

results matching ""

    No results matching ""