авторефераты диссертаций БЕСПЛАТНАЯ БИБЛИОТЕКА РОССИИ

КОНФЕРЕНЦИИ, КНИГИ, ПОСОБИЯ, НАУЧНЫЕ ИЗДАНИЯ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ


Pages:     | 1 |   ...   | 6 | 7 || 9 | 10 |   ...   | 33 |

«Е.Мамаев MS SQL SERVER 2000 Книга посвящена одной из самых мощных и популярных современных систем управления базами данных - Microsoft SQL Server 2000. ...»

-- [ Страница 8 ] --

Разрешить пользователю выполнять те или иные команды Transact-SQL также можно при помощи команды GRANT СО следующим синтаксисом:

GRANT {ALL I statement[,...n]} TO security_account [,...n] Глава 9. Система безопасности SQL Server 2000 При указании аргумента ALL пользователю или группе будут даны права выпол нять все допустимые команды Transact-SQL. Однако этот параметр может исполь зоваться только при предоставлении прав членам фиксированных ролей sysadmin или dbowner. Для предоставления пользователю права выполнять конкретные команды Transact-SQL предназначен параметр s t a t e m e n t !,...п]. Список допус тимых значений этого параметра был приведен в разд. "Права на выполнение ко манд Transact-SQL" ранее в этой главе. Назначение параметра secu r i t y a c c o u n t [,...п] идентично рассмотренному ранее одноименному параметру.

Замечание Если пользователь имеет возможность выполнять те или иные действия, то говорят, что ему выдано право доступа GRANT.

В качестве примера рассмотрим предоставление роли Accesseduser права вы борки ИЗ столбцов au_id, au_lname, aulname И s t a t e таблицы authors базы данных pubs:

G A T SELECT (auid, au_lname, au_lname, state) RN ON authors TO AccessedUser Получив набор прав, пользователь сможет выполнять разрешенные действия.

Но в некоторых случаях бывает необходимо запретить ему выполнять некоторые операции в базе данных.

Запрещение доступа Система безопасности SQL Server 2000 позволяет создать довольно сложную иерархическую систему управления правами доступа пользователей к объектам базы данных. Если к базе данных обращаются тысячи пользователей, для управ ления которыми применяются как группы Windows NT, так и роли базы данных SQL Server, то отслеживание прав доступа конкретного пользователя становится проблематичным. Пользователь может получить права явно или как член роли базы данных или группы Windows NT. SQL Server 2000 не имеет встроенных средств для отслеживания прав доступа пользователя через членство в той или иной роли или группе. Поэтому администратор должен держать в голове список ролей и групп, в которые входит пользователь, и просматривать права, выдан ные каждой из них.

Эта задача не так сложна, если права групп и ролей не пересекаются. Но часто бывает, что некоторым пользователям необходимо временно запретишь доступ (deny access) к определенным таблицам или даже к конкретным столбцам таб лицы, а исключение из роли или группы лишит пользователей прав доступа, которые должны быть оставлены. Лучший выход — создание новой роли, в ко торую будут включены все пользователи, которым необходимо ограничить доступ.

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

258 Часть III. Администрирование Основой описанного подхода ограничения доступа является то, что запрещение доступа (DEMY) имеет более высокий приоритет, чем его предоставление (GRANT).

Если пользователю был явно запрещен доступ к тому или иному объекту, то система безопасности SQL Server 2000 гарантирует, что пользователь не будет иметь его, даЬке если он был предоставлен ему явно или через членство в любой роли базы данных или группе Windows NT. Это правило касается и роли db_owner. Администратор может запретить доступ пользователю непосредствен но или через его членство в роли или группе.

) ( Замечание При запрещении доступа можно воспользоваться фиксированными ролями базы дан ных db_denydatawriter И db_denydatareader, которые соответственно запреща ют изменение и чтение данных во всех таблицах и представлениях базы данных.

Для запрещения пользователю или роли доступа к объектам базы данных при меняется команда DENY, имеющая синтаксис:

DENY { ALL [PRIVILEGES] I p e r m i s s i o n [,... n ] } { [( column [,... n ] )] ON { t a b l e I view} I ON { t a b l e | view } [( column [,... n ] )] I ON { s t o r e d _ p r o c e d u r e I e x t e n d e d _ p r o c e d u r e } I ON { u s e r _ d e f i n e d _ f u n c t i o n } } TO s e c u r i t y _ a c c o u n t [,... n ] [CASCADE] В целом назначение и использование параметров команды DENY аналогично рас смотренным в предыдущем разделе параметрам команды GRANT. Тем не менее, есть некоторые отличия.

Обратите внимание на ключевое слово CASCADE. ЕСЛИ команда DENY выполняет ся с ключевым словом CASCADE, TO запрещение прав доступа будет каскадиро ваться. Если пользователь, которому запрещается доступ к объекту, предостав лял другим пользователям базы данных доступ к объекту, то при указании ключевого доступа CASCADE ДЛЯ ЭТИХ пользователей также будет запрещен дос туп. Если эти пользователи в свою очередь предоставляли доступ еще кому-то, то и для них тоже будет запрещен доступ.

Для наложения запрета на выполнение команд Transact-SQL также предназна чена команда DENY:

DENY{ALL | s t a t e m e n t [, n]} ТО s e c u r i t y _ a c c o u n t [,...n] Неявное отклонение доступа Мы рассмотрели два граничных состояния прав доступа: предоставление (GRANT) и запрещение (DENY). Н О существует еще и третье состояние — неявное отклоне ние доступа (revoke access). Его можно также рассматривать, как отмену ранее Глава 9. Система безопасности SQL Server 2000 259_ выданных разрешений (как предоставления, так и отклонения доступа). Если ранее пользователю не было выдано никаких разрешений к объекту, то выпол нять неявное отклонение доступа бессмысленно.

Сразу же после создания в базе данных нового пользователя для него по умол чанию установлено неявное отклонение доступа ко всем объектам. Конечно, при создании пользователя ему можно сразу же предоставить комплект прав досту па, включив его в ту или иную роль базы данных, но мы рассмотрим ситуацию, когда этого не происходит. Неявное отклонение доступа (REVOKE) происходит, если для пользователя четко не указано разрешение или запрещение на доступ к объекту. Можно сказать, что неявное отклонение доступа — это отсутствие прав доступа или "среднее состояние" между запрещением и предоставлением досту па. Система безопасности SQL Server 2000 спроектирована таким образом, что пользователь сможет обратиться к данным только в том случае, если доступ был ему явно предоставлен и нет никаких запрещений на обращение к объекту.

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

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

Чтобы установить неявное отклонение доступа для пользователя к тому или иному объекту базы данных, применяется команда REVOKE СО следующим син таксисом:

REVOKE [GRANT OPTION FOR] { ALL [PRIVILEGES] I permission [,...n] } { [( column [,...n] )] ON {table I view} I ON (table I view} [( column [,...n] )] I {storedjorocedure I extended_procedure} } { TO I FROM } security_account [, n] [CASCADE] [AS { group I role }] 260 Часть III. Администрирование Как и для команды DENY, синтаксис команды REVOKE В большей части повторяет синтаксис команды GRANT, рассмотренной ранее в этой главе. Как и при запре щении доступа, при установлении неявного отклонения доступа также допуска ется каскадирование изменений на других пользователей. Единственным пара метром команды REVOKE, не использующимся для команд GRAND И DENY И поэтому не рассмотренным ранее, является параметр GRANT OPTION FOR. Указа ние этого параметра позволяет лишить пользователя возможности выдавать другим пользователям разрешения на доступ к объекту. То есть ввод параметра GRANT OPTION FOR необходим, когда пользователю были предоставлены разре шения доступа с помощью параметра WITH G A T OPTION.

RN ) ( Замечание Назначение параметра FROM аналогично назначению параметра то. То есть после ключевого слова FROM 'должен указываться список пользователей и ролей базы данных, для которых должно быть.установлено неявное отклонение доступа.

Неявно отклонить возможность выполнения команд Transact-SQL можно при помощи команды REVOKE СО следующим синтаксисом:

REVOKE {ALL I statement[,...n]} FROM security_account [,...n] Просмотр прав доступа При работе с Enterprise Manager довольно просто получить информацию о пра вах доступа пользователей и ролей к тем или иным объектам базы данных. Дос таточно открыть окно свойств пользователя (роли) или объекта базы данных и нажать кнопку Permissions. Однако, иногда подобную информацию необходимо получить и средствами Transact-SQL. Для этого возможен запуск системной хранимой процедуры sp_heiprotect, имеющей синтаксис:

sp_helprotect [[@name =] 'object_statement'] [, [@username =] 'security_account' ] [, [Sgrantorname =] 'grantor'] [, [Spermissionarea =] 'type'] (~ Замечание ^ Право вызова данной хранимой процедуры выдано фиксированной роли базы дан ных Public. Таким образом, каждый пользователь базы данных может получить информацию о правах доступа любого из пользователей текущей базы данных к произвольному объекту этой базы данных.

Рассмотрим назначение и использование параметров хранимой процедуры.

• [ n m =] @a e 'object_statement' С помощью этого параметра указывается имя объекта базы данных, о правах доступа к которому предполагается получить информацию. Также с помо щью данного параметра может быть указано право доступа на выполнение команд Transact-SQL:

Глава 9. Система безопасности SQL Server 2000 26?

• CREATE DATABASE;

• CREATE DEFAULT;

• CREATE FUNCTION;

• CREATE PROCEDURE;

• CREATE RULE;

• CREATE TABLE;

• CREATE VIEW;

• BACKUP DATABASE;

• BACKUP LOG.

Если параметр gname опускается или равен NULL, TO будет выведена инфор мация о правах доступа ко всем объектам текушей базы данных.

П [gusername =] 'security_account' Этот параметр предназначен для указания имени пользователя или роли, о правах которого требуется получить информацию. Если параметр опускается или равен NULL, TO будет выведена информация о правах доступа всех поль зователей и ролей текущей базы данных.

П [@grantorname =] ' g r a n t o r ' Помимо имен объектов и пользователей, можно также ввести имя пользова теля, который выдал соответствующее разрешение доступа к объекту. Это должно быть имя пользователя или роли текущей базы данных.

П [@permissionarea =] 'type' С помощью данного параметра можно ограничить область охвата прав досту па, информация о которых будет выведена. Параметр может принимать сле дующие значения:

• • s' — будет выведена информация только о правах на выполнение команд;

• ' о ' — будет выведена информация только о правах доступа к объектам;

'о s1 — будет выведена информация как о правах доступа к объектам, • так и о правах доступа на выполнение команд. Это значение используется по умолчанию.

В качестве иллюстрации использования хранимой процедуры s p h e l p r o t e c t получим сведения о правах доступа пользователей к таблице authors:

U E pubs S E E spjielprotect 'authors' XC Будет получен следующий результат:

Owner Object Grantee Grantor ProtectType Action Column dbo authors guest dbo Grant Delete dbo authors guest dbo Grant Insert dbo authors guest dbo Grant References (All+New) 262 Часть III. Администрирование dbo authors guest dbo Grant Select (All+New) dbo authors guest dbo Grant Update (All+New) (5 row(s) affected) Как видно, информация выводится в нескольких столбцах. Рассмотрим их на значение:

О owner. В этом столбце указывается имя текущего владельца объекта.

• objects. Имя объекта, о котором выводится информация.

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

П Grantor. Имя пользователя или роли базы данных, который предоставил другому пользователю соответствующее право доступа.

• ProtectType. В данном столбце указывается тип разрешения, выданного пользователю.

П Action. Указывается тип действия, которое разрешено выполнять пользователю.

• column. Если разрешение выдано для определенного столбца таблицы, то будет выведено имя этого столбца. Если разрешение выдано для всех столб цов, то будет указано (Aii+New).

Теперь же получим информацию о правах на выполнение команд, выданных пользователю guest:

USE pubs sp_helprotect NULL, 'guest', NULL, 's' Будет получен следующий результат:

Owner Object Grantee Grantor ProtectType Action Column dbo guest Grant Create Default dbo guest Grant Create Procedure.

dbo guest Grant Create Rule dbo guest Grant Create Table dbo guest Grant Create View (5 row(s) affected) Иерархия прав доступа В предыдущих разделах были рассмотрены все типы прав доступа в базах дан ных, их поведение и управление ими. В этом же разделе обсудим использование прав доступа при работе со множеством объектов. Ситуация, когда доступ пре доставляется к самостоятельной таблице, достаточно проста. Если же необходи мо предоставить доступ к представлению, обращающемуся к данным из разных таблиц, принадлежащих к тому же разным владельцам, то управление правами доступа существенно усложняется.

При обращении пользователя к объектам базы данных, ссылающихся на другие объекты, выполняется проверка прав доступа не только для самого объекта, к которому непосредственно обращается пользователь, но также и к объектам, на Глава 9. Система безопасности SQL Server 2000 которые тот ссылается. При этом система безопасности не выполняет проверку, если владельцем зависимых объектов является тот же пользователь, владеющий основным объектом, к которому обращается пользователь. Поясним сказанное на примере.

Предположим, что пользователь Liliya создал в базе данных таблицу Tabiei.

Потом он создает представление viewi, которое строится на основе таблицы Tabiei. Затем Liliya предоставляет пользователю John право на просмотр представления viewi. Пользователь John сможет успешно просматривать данные таблицы Tabiei через представление viewi, не имея прав на просмотр таблицы Tabiei.

Если же представление viewi было бы построено на основе таблицы таЫе2, принадлежащей пользователю Liss, то чтобы иметь возможность просматривать данные viewi, пользователь Liss должен выдать пользователю John соответст вующие права доступа к таблице Table2.

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

На рис. 9.18 приведен пример хранимой процедуры, обращающейся к различным объектам базы данных.

Joe.procedurel J Joe.procedure2 | | Sue.procedure I Joe.viewi Sue.view i Suetabel Joe.table2 Sue,table Рис. 9.18. Иерархия прав доступа Пользователь Joe дает пользователю Sue право на вызов хранимой процедуры Procedure 1, владельцем которой он является. Система безопасности SQL Server 2000 выполнит проверку прав доступа пользователя sue к объектам Procedurel, Procedure3, View2, Table2 И ТаЫеЗ. Проверка доступа К объектам Procedure2 и Tabiei не выполняется, т. к. владельцем соответствующих выше лежащих объектов и объектов Procedure2 и Tabiei является один и тот же пользователь.

Глава Административные задачи Большинство глав этой части имеют конкретную специализацию — система безопасности, резервное копирование, подсистема автоматизации, репликация и т. д. В данной главе рассмотрены темы, относящиеся непосредственно к ад министрированию SQL Server 2000, а также некоторые рекомендации по рас пределению обязанностей между персоналом.

Задачи администрирования можно условно разделить на две части:

П Администрирование собственно SQL Server 2000 подразумевает выполнение задач, имеющих отношение к работе всего сервера. Например, управление объемом оперативной памяти, используемой сервером, управление работой и настройками служб SQL Server 2000, предоставление пользователям доступа к серверу, резервное копирование системных баз данных, создание пользова тельских баз данных и т. д.

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

Администрирование сервера и баз данных имеет мало общих задач. Тем не ме нее, некоторые из них могут решаться как на уровне сервера, так и на уровне базы данных. Например, изменение размера и создание резервных копий базы данных способен выполнять как администратор сервера, так и администратор базы данных.

Замечание Далее, чтобы не было путаницы, в соответствии с ролями SQL Server 2000 админи стратора сервера будем называть системным администратором.

В небольших организациях часто обязанности системного администратора и администратора баз данных совмещает один человек. Более того, нередко этот же человек выполняет и администрирование сети организации. С условием дос таточно высокой квалификации администратора подобный подход является до вольно эффективным, т. к. позволяет одному человеку быть в курсе всех про блем пользователей. К тому же, организации не требуется платить зарплату трем Глава 10. Административные задачи отдельным сотрудникам — администратору сети, системному администратору и администратору баз данных. Это также является немаловажным фактором. * В крупных компаниях, имеющих сотни компьютеров и пользователей, админи стративные задачи распределяются между персоналом. В упрощенном варианте это предполагает, что управление сетью осуществляется одним человеком, управление SQL Server 2000 — другим, а базами данных управляет третий. Од нако на практике часто осуществляется более мелкое разделение обязанностей.

Кроме того, у каждой базы данных может быть свой собственный администра тор, а то и несколько.

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

Тем не менее, в предыдущих главах были рассмотрены вопросы установки сете вых протоколов и управление пользователями Windows NT.

В задачи администрирования сервера входит следующее:

• Инсталляция и обновление версий SQL Server. Администратор должен сле дить за выходом новых версий продукта, сервисных пакетов (Service Pack) и исправлений (Patches). Как и в любом другом продукте, в SQL Server могут иметься некоторые недоработки и ошибки в программном коде. По мере ис пользования эти недочеты обнаруживаются и устраняются. Если недочеты несерьезны, то выпускается сервисный пакет, который обычно исправляет множество недочетов. Если же обнаруживается серьезная ошибка, то произ водитель выпускает исправление, или, как его еще называют, заплатку. За платка обычно предназначена для решения одной, но серьезной проблемы и выпускается гораздо оперативнее, чем сервисные пакеты. Например, когда в SQL Server 7.0 была обнаружена серьезная дыра в системе безопасности, то заплатка была выпущена в течении 2—3 дней и выложена на сайт Microsoft, откуда ее могли скачать все желающие. Все это сказано к тому, что админи стратор должен не только выполнять рутинную работу, но и быть в курсе во просов безопасности. Будет печально, если злоумышленник узнает о дырах в защите раньше администратора и успеет воспользоваться ими.

• Запуск и останов служб SQL Server 2000. Со стороны SQL Server 2000 только члены фиксированных ролей sysadmin и serveradmin могут выполнять за пуск и останов служб сервера. В обычной ситуации останов служб не требу ется. Службы SQL Server 2000 могут непрерывно работать на протяжении многих недель и месяцев. Тем не менее, останов служб может понадобиться для выполнение некоторых административных задач, например, перестрое ния системных баз данных, восстановления их резервных копий и некоторых других задач.

266 Часть III. Администрирование • Конфигурирование связанных и удаленных серверов. Когда в сети имеется бо лее одного сервера баз данных (не обязательно все они являются SQL Server 2000), то часто необходимо предоставить пользователям возможность обращаться к данным, хранящимся на этих серверах. Работа со связанными и удаленными серверами позволяет пользователям безболезненно обращаться к любому серверу сети.

• Управление хранимыми процедурами, стартующими при запуске SQL Server 2000. Если при каждом старте службы MSSQLServer должны выпол няться определенные задачи, то администратор может воспользоваться воз можностью автоматического запуска хранимых процедур при запуске сервера.

• Управление настройками служб SQL Server 2000. Одной из основных задач является контроль за параметрами работы служб. Это включает управление объемом оперативной памяти, используемой сервером, потоками, приорите том, настройками по умолчанию для пользовательских соединений, конфи гурирование почтовых профилей и многое другое. Подробно управление ра ботой служб SQL Server 2000 с помощью Enterprise Manager было рассмот рено в главе 8.

П Управление учетными записями. В задачи администрирования входит также создание учетных записей Windows NT и SQL Server, предоставление им дос тупа к SQL Server 2000. Часть этих вопросов рассматривалась в разд. "Под готовка учетных записей" главы 4.

• Резервное копирование. Необходимо своевременно создавать резервные ко пии пользовательских и системных баз данных с помощью полных, диффе ренциальных копий, а также копий журнала транзакций. Резервное копиро вание позволит восстановить информацию даже в случае полного уничтожения сервера. Также нужно выполнять конфигурирование устройств резервного копирования, следить за носителями и т. д. Подробно резервное копирование будет рассматриваться в главе 13.

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

• Осуществление мониторинга и оптимизации. Необходимо периодически ана лизировать работу SQL Server 2000 для поиска узких мест. Подобный анализ может помочь увеличить производительность сервера. Подробно мониторинг и оптимизация работы SQL Server 2000 будут рассмотрены в главе 17.

Теперь же приведем список задач по управлению базами данных.

О Создание объектов базы данных. Чаще всего выполняется предварительная разработка структуры базы данных, которая затем реализуется в виде набора объектов. Администратор базы данных должен выполнить создание таблиц, Глава 10. Административные задачи представлений, хранимых процедур, правил, умолчаний, ограничений цело стности и т. д.

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

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

О Выполнение резервного копирования. Как уже говорилось, резервное копиро вание может выполняться как на уровне сервера, так и на уровне базы дан ных. Если системный администратор считает целесообразным, то выполне нием резервного копирования пользовательских баз данных может занимать ся администратор соответствующей базы данных.

О Обеспечение целостности и достоверности данных. Периодически необходимо выполнять проверку целостности данных. В противном случае пользователи могут столкнуться с различными проблемами при работе с данными.

О Перестроение индексов и обновление статистики. Часто с течением времени данные в таблицах претерпевают изменения и степень заполнения как ин дексных, так и страниц данных способна увеличиться. Это может стать при чиной низкой производительности операций добавления и изменения дан ных. Тогда необходимо выполнить перестроение индексов. Кроме того, если отключено автоматическое обновление статистики, то также рекомендуется периодически выполнять обновление статистики вручную.

О Создание ролей приложения. Если предполагается, что для доступа к базе данных будет использоваться специальное приложение, то для удобства и обеспечения дополнительной безопасности можно использовать роли при ложения. Это позволит предоставить права доступа только этой роли, не предоставляя доступа непосредственно пользователям, которые будут рабо тать с приложением.

• Выполнение мониторинга запросов. Если некоторые запросы или хранимые процедуры выполняются слишком долго, то следует провести анализ хода выполнения запроса. Может оказаться, что последовательность обращения запроса или процедуры к объектам базы данных приводит к появлению кон фликтов доступа и длительному ожиданию освобождения нужных ресурсов.

Выходом из ситуации может явиться изменение запроса.

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

До сих пор, когда мы говорили об администрировании, предполагалось, что все задачи выполняет один человек. То есть и администрирование сервера, и адми нистрирование базы данных осуществляет один человек. Однако такой подход практикуется только на небольших и малых предприятиях. В больших компани 268 Часть III. Администрирование ^ ях обычно задачи администрирования распределяются между несколькими людьми — операторами. Каждый из операторов выполняет свою часть задач.

Например, может быть оператор резервного копирования, оператор управления базами данных и т. д.

( Замечание } В SQL Server 2000 существует набор ролей, которые могут быть использованы для предоставления пользователям того или иного права. Другим способом предоста вить права на выполнение административных задач нельзя. Для предоставления прав на выполнение административных задач используются фиксированные роли, которые имеются как на уровне сервера, так и на уровне базы данных. Их список и назначение были приведены в главе 9.

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

Специальная подсистема SQL Server 2000 собирает информацию о работе как SQL Server 2000, так и о работе операционной системы. На основе полученной информации принимается решение об использовании или освобождении тех или иных ресурсов. Администратору достаточно лишь разрешить автоматиче ское конфигурирование сервера. Мастер установки самостоятельно разрешает автоматическое конфигурирование сервера. Однако при необходимости систем ный администратор может использовать ручное управление теми или иными параметрами. Кроме того, может понадобиться изменить значения некоторых опций, не поддерживающих автоматическое конфигурирование. Например, ад министратор может установить для процессов SQL Server 2000 высокий приори тет (13), т. к. во время установки назначается нормальный приоритет (7). Одна ко параметры настройки сервера конфигурируются в процессе установки оптимальным образом, и изменение их значений практически не требуется. Тем не менее, для профессиональной работы необходимо понимать назначение тех или иных параметров и знать, какое Действие на работу сервера окажет установ ка параметра в то или иное состояние. Подробно конфигурирование служб SQL Server 2000 было рассмотрено в главе 8.

Если в вашей организации имеется всего один SQL Server 2000, то сразу же после его установки можно использовать Enterprise Manager для управления им. Однако если предполагается управление с одного рабочего места множеством серверов, то потребуется выполнить некоторые дополнительные действия по регистрации сер веров. Дело в том;

что прежде чем Enterprise Manager сможет быть использован Глава 10. Административные задачи для управления SQL Server 2000, необходимо зарегистрировать этот сервер. Только после этого сервер появится в панели Enterprise Manager, и администратор сможет управлять им. К тому же, если предполагается выполнение распределенных запро сов, обращающихся к данным на различных серверах, то потребуется конфигури рование связанных (linked) или удаленных (remote) серверов. Следующие разделы будут посвящены регистрации сервера в Enterprise Manager, а также конфигуриро ванию связанных и удаленных серверов.

Регистрация сервера Как уже было сказано, прежде чем можно будет использовать Enterprise Manager для управления параметрами работы SQL Server 2000, а также имеющимися на сервере базами данных, необходимо зарегистрировать соответствующий сервер.

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

При регистрации сервера требуется указать следующую информацию:

• полное имя инсталляции, т. е. с указанием имени компьютера в сети;

• имя группы серверов, в которую будет включен регистрируемый SQL Server 2000;

О тип аутентификации, который будет применяться для подключения Enterprise Manager к указанному серверу;

• при назначении аутентификации SQL Server также необходимо ввести имя и пароль учетной записи SQL Server, которая будет использоваться для уста новки соединения.

Регистрацию сервера можно выполнять различными способами.

• С помощью окна Registed SQL Server Properties. Метод предполагает исполь зование интерфейса Enterprise Manager и является самым быстрым способом регистрации сервера с нужными параметрами.

О С помощью мастера Register SQL Server Wizard. Метод является наиболее простым, однако некоторым может показаться слишком длинным.

( Замечание ^ С помощью Enterprise Manager, устанавливаемого при инсталляции SQL Server 2000, можно управлять и серверами SQL Server 7.0. Регистрация SQL Server 7.0 выполня ется аналогично регистрации серверов SQL Server 2000.

Сначала рассмотрим регистрацию сервера с помощью окна Registered SQL Server Properties. Для вызова этого окна необходимо выделить в панели Enterprise Manager одну из имеющихся групп серверов и в ее контекстном меню выбрать команду New SQL Server Registration. В ответ откроется диалоговое ок но Registered SQL Server Properties (рис. 10.1), с помощью которого и выполня Часть III. Администрирование ется регистрация сервера. Другой способ открытия этого окна предполагает ис пользование контекстного меню одного из серверов, в котором также необхо димо указать команду New SQL Server Registration.

Рис. 1 0. 1. Окно Registered SQL Server Properties В раскрывающемся списке Server выбирается имя сервера SQL Server 2000 или SQL Server 7.0, который предполагается зарегистрировать. Если необходимо за регистрировать инсталляцию по умолчанию, то достаточно указать только сете вое имя NetBIOS компьютера, на котором установлен регистрируемый SQL Server 2000. Когда же выполняется регистрация именованной инсталляция, то помимо имени компьютера необходимо указать имя инсталляции в формате имя_сервера\имя_инсталляции.

Если вы не помните имя SQL Server 2000, который предполагается зарегистри ровать, то можно воспользоваться средствами поиска серверов в каталоге Active Directory. Для этого предназначено окно SQL Active Directory Search (рис. 10.2), вызвать которое можно с помощью кнопки ^ J, расположенной справа от спи ска Server.

Раскрывающийся список In недоступен и интереса не представляет. В поле Name можно указать известную часть имени SQL Server 2000, который предпо лагается зарегистрировать. Однако допускается вводить только первую часть.

Использование символов шаблона1 не поддерживается. Если поле Name остает ся пустым, то в поиске будут участвовать все сервера, независимо от имени. До К символам шаблона, которые используются при поиске файлов, папок и ресурсов, относится знак вопроса (?) и звездочка (*). — Ред.

Глава 10. Административные задачи полнительно можно ограничиться конкретной версией. Для этого в раскрываю щемся списке Version необходимо выбрать номер нужной версии — 7.0 или 8. (SQL Server 2000). Если поле Version останется пустым, то в результат поиска будут включены все серверы независимо от версии. После того как критерии поиска будут заданы, остается только нажать кнопку Find Now. Список найден ных серверов выводится в нижней части окна. Дважды щелкнув на любом из серверов, можно перенести его имя в раскрывающийся список Server.

Рис. 10.2. Окно SQL Active Directory Search с Замечание Серверы SQL Server, работающие под управлением операционной системы Win dows 95/98, не находятся при поиске. Это вызвано ограничениями операционной системы. Поэтому при выполнении регистрации серверов, работающих под управ лением Windows 95/98, необходимо знать имя компьютера и инсталляции (для име нованной инсталляции). Кроме того, не будут найдены SQL Server, запущенные как приложения. Для регистрации таких серверов также необходимо знать имя компью тера и инсталляции.

В разделе Connections (см. рис. 10.1) указывается тип аутентификации, который будет использовать Enterprise Manager для подключения к регистрируемому SQL Server 2000. Тип аутентификации выбирается с помощью переключателя, кото рый может быть установлен в одно из двух следующих положений:

• Use Windows NT authentication. Будет использоваться аутентификация Windows NT. В этом случае пользователь не должен будет указывать никаких 10 Зи. 272 Часть III. Администрирование дополнительных сведений для подключения к серверу — ему достаточно за регистрироваться в домене.

П Use SQL Server authentication. В этом случае будет использоваться аутенти фикация SQL Server и пользователь для установления соединения с сервером обязан указывать имя учетной записи и ее пароль. При установке переклю чателя в это положение становятся активными дополнительные элементы управления:

поле Login Name — имя учетной записи, которая участвует в установлении • соединения. Должна указываться учетная запись, созданная на регистри руемом сервере;

поле Password — пароль учетной записи;

• • флажок Always prompt for login name and password. Когда он сброшен, необ ходимо ввести как имя, так и пароль учетной записи. Введенная информа ция сохраняется в реестре и при запуске Enterprise Manager пользователь сразу же получает возможность работать с сервером. Когда же флажок уста новлен, то при первой попытке обращения к серверу Enterprise Manager появится окно с предложением ввести имя и пароль учетной записи, кото рые будут использоваться для установления соединения. При помеченном флажке поле Password становится недоступным, хотя в поле Login Name можно ввести имя учетной записи, которое будет выводится в качестве зна чения по умолчанию при установлении соединения.

( Замечание ^ Если вы обладаете правом доступа к конфиденциальной информации, при исполь зовании аутентификации SQL Server рекомендуется всегда устанавливать флажок Always prompt for login name and password. Это позволит обеспечить более высо кий уровень безопасности. Защита пароля при хранении его в реестре оставляет желать лучшего. В SQL Server 7.0 пароль при хранении в реестре шифровался с по мощью операции исключающего ИЛИ (XOR). Данный метод шифрования легко взла мывается. Хотя и можно было обеспечить более высокую степень защиты, устано вив специальную заплатку (patch), все же сохранение пароля само по себе является небезопасным.

После того, как будет выбран тип аутентификации, можно изменить некоторые параметры работы Enterprise Manager с регистрируемым сервером. Для этого используется группа параметров Options.

• Server Group. С помощью этого раскрывающегося списка выбирается группа, в которую будет помещен регистрируемый сервер. Размещение сервера в той или иной группе не имеет особого значения. Единственное назначение груп пы — объединение серверов для удобства работы с ними. Если ее структура достаточно сложна, то для выбора нужной группы можно воспользоваться окном Server Groups (рис. 10.3), которое можно открыть с помощью кнопки ^ J, расположенной справа от списка Server Group. Это же окно может быть использовано для создания новой группы. Допускается организация вложен ных групп.

Глава 10. Административные задачи с Замечание Обычно все серверы располагаются в одной группе. Редко в какой компании потре буется создание более двух-трех групп. И уж совсем редко кто организует вложен ные группы. Даже такая огромная компания как Microsoft использует порядка 50— серверов SQL Server, а для размещения такого количества серверов достаточно групп первого уровня.

П Display SQL Server state in console. Установка этого флажка позволяет отобра жать состояние регистрируемого сервера в консоли Enterprise Manager. Для этого Enterprise Manager будет периодически опрашивать состояние сервера и при его изменении соответствующим образом модифицировать значок сервера.

• Show system databases and system objects. В каждой базе данных имеется набор системных таблиц, используемых для хранения информации о пользователь ских объектах, самих пользователях, дополнительных файлах базы данных, файлах журнала транзакций и другой системной информации. Кроме того, су ществует ряд других объектов, используемых для системных целей (например, хранимые процедуры, триггеры). Если вы хотите, чтобы эти объекты отобра жались в панели Enterprise Manager, то необходимо установить рассматривае мый флажок. Если же работа с системными объектами не предполагается и они только мешают, то лучше будет сбросить флажок. При этом из панели Enterprise Manager будут также исключены и системные базы данных.

П Automatically start SQL Server when connecting. Установка этого флажка по зволяет автоматически выполнять запуск остановленного SQL Server при попытке установления соединения с ним.

Рис. 10.3. Окно Server Groups Замечание Рекомендуется разрешать отображение состояния сервера в консоли Enterprise Manager, а также разрешать автоматический запуск сервера при обращении к нему.

Однако не советуют разрешать отображение системных объектов и баз данных в 10* 274 Часть III. Администрирование консоли Enterprise Manager, т. к. обычно прямая работа с системными объектами не ведется и они только мешают.

На этом конфигурирование параметров регистрации сервера заканчивается. Ос тается только нажать кнопку ОК, после чего Enterprise Manager попытается под ключиться к регистрируемому серверу. Однако, если сервер не удалось найти, то Enterprise Manager выдаст соответствующее сообщение и спросит, выполнять ли регистрацию сервера не смотря на то, что он не найден.

Сервер может быть не найден из-за своей остановки. В этом случае можно раз решить выполнить регистрацию. Однако, если сервер запущен и все равно не найден, то следует проверить, не содержит ли значение в раскрывающемся спи ске Server ошибки. Кроме того, сервер может быть не найден, если на компью тере, с которого выполняется регистрация, используются иные сетевые библио теки и протоколы, чем на регистрируемом сервере.

( Замечание ^) Если сервер зарегистрирован с использованием аутентификации Windows NT, а для пользователя не создано учетной записи на SQL Server, то будет выдано сообщение об ошибке "Login failed" (ошибка учетной записи). Аналогичное сообщение будет вы дано, когда используется аутентификация SQL Server и указано некорректное имя пользователя или пароль.

Мы рассмотрели выполнение регистрации сервера с использованием окна Reg istered SQL Server Properties. Теперь же разберемся в выполнении регистрации с помощью мастера Register SQL Server Wizard. Для его вызова необходимо в па нели инструментов Enterprise Manager нажать кнопку Run a Wizard, а затем в открывшемся диалоговом окне выбрать пункт Register Server Wizard и нажать кнопку ОК. После этого будет запущен мастер.

Первое окно мастера (рис. 10.4) содержит общую информацию о шагах регист рации сервера. Интерес представляет только флажок From now on, I want to perform this task without using a wizard. Его установка позволяет выполнять такую простую операцию, как регистрация сервера, не с помощью мастера, а с помо щью окна Registed SQL Server Properties, и нажатие кнопки Next приведет не к появлению второго окна мастера, а к завершению его работы и открытию окна Registered SQL Server Properties, с помощью которого и будет предложено вы полнить регистрацию. Однако этот способ уже был рассмотрен, поэтому мы сбросим флажок From now on, I want to perform this task without using a wizard и выполним регистрацию с помощью мастера.

Во втором окне мастера (рис. 10.5) необходимо ввести имя регистрируемого сервера. Как видно из рисунка, окно разделено на две части. В левой приведен список серверов (Available servers), найденных в сети и не зарегистрированных ранее. Если имени нужного сервера нет в списке, то его можно ввести вручную с помощью поля над списком. Правая часть окна содержит список Added servers, в который с помощью кнопки Add необходимо добавить имена предпо лагаемых регистрируемых серверов. В список можно добавить несколько серве ров. То есть мастер позволяет выполнять одновременную регистрацию множест Глава 10. Административные задачи ва серверов. Если какой-то сервер был добавлен ошибочно, то его имя можно удалить с помощью кнопки Remove.

Рис. 10.4. Первое окно мастера Register SQL Server Wizard ill Рис. 10.5. Второе окно мастера Register SQL Server Wizard Часть III. Администрирование Замечание Мастер не найдет те SQL Server, которые работают под управлением операционной системы Windows 95/98, а также серверы, запущенные как приложение. Для регист рации таких серверов необходимо вручную указать их имя.

Когда все серверы будут добавлены, можно перейти к следующему окну. Третье окно мастера (рис. 10.6) предназначено для выбора типа аутентификации, кото рый будет использоваться для подключения Enterprise Manager к указанному серверу. Выбор типа аутентификации осуществляется с помощью одного из пе реключателей Connect using. При выборе аутентификации SQL Server необходи мо указать имя и пароль учетной записи, которая будет участвовать в установле нии соединения.

Рис. 1 0. 6. Третье окно мастера Register SQL Server Wizard В четвертом окне мастера (рис. 10.7) указываются имя (Login name) и пароль (Password) учетной записи SQL Server, которые будут использованы для уста новления соединения с регистрируемым сервером. Указанные значения будут подставляться автоматически. Данные об имени и пароле учетной записи запи шутся в реестр. Если вы предпочитаете обезопасить себя, установите переклю чатель в положение Prompt for the SQL Server account information when connect ing. В этом случае поля Login name и Password становятся неактивными, а пользователь должен будет вводить имя и пароль в Enterprise Manager каждый раз, когда происходит установление соединения с сервером.

Глава 10. Административные задачи Рис. 10.7. Четвертое окно мастера Register SQL Server Wizard Замечание При использовании аутентификации Windows NT четвертое окно не выводится и пользователь сразу же попадает в пятое окно.

В пятом окне (рис. 10.8) необходимо выбрать группу включения регистрируе мого сервера. Если требуется добавить сервер в одну из имеющихся ранее групп, то необходимо установить переключатель в положение Add the SQL Server(s) to an existing SQL Server group и выбрать в раскрывающемся списке Group name имя нужной группы. Если же необходимо создать новую группу и включить в нее сервер, то следует установить переключатель в положение Create a new top-level SQL Server group и в поле Group name указать имя новой группы.

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

( Замечание Средствами мастера Register SQL Server Wizard нельзя создать вложенную группу.

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

После нажатия кнопки Finish работа мастера заканчивается, и все введенные параметры будут применены.

Часть III. Администрирование с_ Замечание Как видно, мастер позволяет конфигурировать не все параметры регистрации сер вера. В частности, нельзя управлять разрешением отображения системных объек тов и баз данных, автоматического запуска остановленного сервера при попытке со единения и просмотром состояния сервера в консоли Enterprise Manager.

Рис. 10.8. Пятое окно мастера Register SQL Server Wizard Рис. 10.9. Последнее окно мастера Register SQL Server Wizard Глава 10. Административные задачи Управление группами Если ваша организация имеет множество SQL Server 2000, то поиск нужного сервера в панели Enterprise Manager будет затруднителен. Для упрощения управ ления серверами сети и создания иерархических структур Enterprise Manager позволяет объединять серверы в группы. Каждая группа может включать не только серверы, но и другие группы. Подобный подход можно сравнить с орга низацией размещения файлов на диске — каждый файл хранится в каталоге, однако любой каталог может содержать не только файлы, но и другие каталоги.

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

с Замечание Группы серверов Enterprise Manager не являются объектами базы данных или SQL Server 2000. Понятие групп, используемых для объединения серверов, существует только на уровне Enterprise Manager. Даже два пользователя, работающих на одном и том же компьютере, могут иметь разную структуру групп и количество зарегистри рованных серверов.

Управление группами включает в себя создание новых, переименование и удаление имеющихся групп. Создание новой группы выполняется с помощью окна Server Groups (рис. 10.10), которое позволяет просмотреть имеющююся структуру групп.

Рис. 10.10. Окно Server Groups Имя создаваемой группы указывается в поле Name. Помимо имени необходимо указать, в какое место имеющейся структуры будет добавлена новая группа. Ес ли один из переключателей Level установлен в положение Top level group, то новая группа будет создана на самом верхнем уровне иерархии, т. е. непосредст венно в корневом элементе Console Root. Если требуется создать вложенную группу, то следует установить переключатель в положение Sub-group of. После этого в нижней части окна станет доступным дерево групп, в котором и нужно 280 Часть III. Администрирование выбрать элемент, в котором будет создана группа с указанным именем. После того, как все будет готово, остается только нажать кнопку ОК.

Для удаления ненужной группы достаточно в ее контекстном меню выбрать ко манду Delete. Однако следует учесть, что Enterprise Manager не удаляет автома тически содержимое группы, поэтому, прежде чем избавиться от группы, требу ется предварительно изъять из нее все подгруппы и серверы. Иначе при попытке удаления будет выдано сообщение об ошибке.

( Замечание ) Enterprise Manager не поддерживает перетаскивания серверов и групп. Поэтому, чтобы изменить местоположение одного из серверов в иерархии групп, потребуется удалить сервер из старой группы и зарегистрировать его в новой.


Для изменения имени группы предназначено окно Rename Server Group (рис. 10.11), вызвать которое можно, выбрав команду Rename SQL Server Group в контекстном меню этой группы. Для изменения имени достаточно ввести в поле Rename the server group to новое значение и нажать кнопку ОК.

Рис. 10.11. Окно Rename Server Group для группы MATRIX Связанные серверы Если в вашей сети имеется лишь один источник данных (data source) — SQL Server 2000, то обращение к данным выполняется достаточно просто. В одном запросе пользователи могут обращаться к данным, расположенным в различных базах. Требуется лишь указать в запросе имя нужной базы данных.

Когда же сеть содержит множество источников данных, то проблема несколько усложняется. Если же эти источники еще и не являются SQL Server 2000, то задача становится еще более сложной. Обращение к распределенным гетероген ным источникам данных в SQL Server 2000 выполняется с помощью технологии OLE DB, позволяющей обращаться как к реляционным, так и к нереляционным источникам данных. Однако, чтобы иметь возможность обратиться к конкрет ному источнику данных, необходимо иметь специального поставщика OLE DB (OLE DB Provider). Поставщик служит своего рода шлюзом между SQL Server 2000 и внешним источником данных, выполняя преобразование команд и данных из формата SQL Server 2000 в формат источника данных и наоборот.

Для доступа к разным типам источников данных следует иметь различных по ставщиков OLE DB.

Глава 10. Административные задачи Поставщик OLE DB является своего рода драйвером, позволяющим обращаться к источнику данных определенного типа с использованием единых интерфейсов и функций OLE DB. Это обеспечивает пользователям единый интерфейс для работы с самыми различными источниками данных. Такой механизм несколько напоминает работу с ODBC, однако технология OLE DB предлагает гораздо большие возможности по доступу к данных.

В составе SQL Server 2000 существует набор поставщиков, предоставляющих возможность обращаться к большинству современных источников данных, та ким как Oracle, DB2, ADSL ODBC, Exchange и другим. Однако, чтобы иметь возможность работать с данными на удаленном источнике, необходимо указать, какой поставщик будет использоваться, размещение источника, каталог и неко торые другие параметры.

Эти параметры позволяют идентифицировать данные, к которым следует обратить ся, и которые должны указываться при каждом подключении к внешнему источни ку данных. Но необходимость указания этих данных при каждом подключении мо жет быть весьма обременительной. Чтобы избежать этого, SQL Server предлагает использовать так называемые связанные серверы (linked servers).

Связанный сервер представляет собой запись в системной таблице sysservers базы данных Master. Для каждого связанного сервера указывается используе мый поставщик OLE DB, имя источника данных, его размещение, строка для установления соединения, каталог (например, имя базы данных), имя компью тера сети, сопоставление и некоторая другая информация.

( Замечание ) В таблице sysservers помимо информации о связанных серверах хранится ин формация о всех других серверах, используемых локальным SQL Server 2000: ин формация об издателях, подписчиках, дистрибьюторах, с которыми работает ло кальный сервер, сведения об удаленных серверах, а также информация и о самом локальном SQL Server 2000.

Когда пользователь в распределенном запросе указывает имя не текущего серве ра, SQL Server 2000 обращается к таблице sysservers для поиска указанного сервера. В случае обнаружения нужной строки из таблицы считывается инфор мация о конфигурации связанного сервера. После этого устанавливается соеди нение с помощью поставщика OLE DB, указанного при настройке связанного сервера, и начинается выполнение распределенного запроса.

После того, как будет определен связанный сервер, станет возможным выпол нение удаленных (remote query) и распределенных запросов (distributed query), об ращающихся к различным источникам данных. Также пользователи смогут вы полнять хранимые процедуры, расположенные на удаленных серверах, и принимать результат, возвращаемый по выполнении этих хранимых процедур.

Например, станет возможным выполнение такого запроса:

S L C t i t l e F O storage.pubs..titleauthor as ta, EE T RM [storage\trelon].pubs.dbo.authors as a, p u b s.. t i t l e s as t W E E ta.au_id = a.au_id A D t. t i t l e _ i d = t a. t i t l e _ i d HR N A D a.state = 'CA' N 282 Часть III. Администрирование Для одного источника данных может быть создано несколько связанных серве ров с различными параметрами. Это часто применяется при работе с несколь кими базами данных одного сервера. При конфигурировании связанного серве ра необходимо указать каталог, в котором будет осуществляться работа. Для серверов баз данных имя каталога является ничем иным, как именем базы дан ных. Таким образом, связанный сервер ограничивает область работы единствен ной базой данных. Чтобы получить доступ к другой базе данных, необходимо определить дополнительный связанный сервер.

Для обращения к любому внешнему источнику данных помимо локального SQL Server 2000 требуется конфигурирование связанного сервера. Это касается и именованных инсталляций, установленных на том же компьютере, что и ис пользуемый SQL Server 2000. Строго говоря, локальный SQL Server 2000 также сконфигурирован как связанный сервер и для него имеется соответствующая запись в таблице sysservers. Однако все SQL Server 2000, установленные на локальном компьютере, регистрируются автоматически. До тех пор, пока не бу дет сконфигурирован связанный сервер, пользователи не смогут обратиться к соответствующему источнику данных. Конфигурирование связанных серверов могут выполнять только члены фиксированных ролей сервера sysadmin и setupadmin. Таким образом, доступ всех пользователей к внешним источникам данных контролируется администратором сервера централизованно.

( Замечание ^ В SQL Server 2000 существует еще один механизм взаимодействия с внешними ис точниками данных — удаленные серверы (remote servers). Однако эта технология позволяет работать только с серверами SQL Server 2000 и SQL Server 7.0. Можно сказать, что удаленные серверы являются частным случаем связанных серверов.

Удаленные серверы будут рассмотрены далее в этой главе. Тем не менее, для об ращения к другим источникам данных все же требуется использование связанных серверов. Помимо этого, можно непосредственно обращаться к источникам данных с использованием команд OPENDATASOURCE И OPENROWSET.

Помимо указания параметров соединения, следует также учесть требования сис темы безопасности внешнего источника данных. Практически все современные средства хранения и обработки данных имеют довольно мощную систему безо пасности для разграничения доступа пользователей к существующей информа ции. Поэтому при установлении доступа со связанным сервером необходимо каким-то образом зарегистрироваться в удаленной системе. Обычно для этого указывается имя учетной записи и ее пароль на связанном сервере. SQL Server 2000 позволяет для каждой локальной учетной записи использовать от дельную учетную записи на удаленном источнике данных. Хотя допускается и отображение всех учетных записей локального SQL Server 2000 в одну и ту же учетную запись удаленного компьютера.

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

Глава 10. Административные задачи Регистрацию, а также последующее управление связанными серверами можно выполнять двумя способами:

• средствами Transact-SQL с помощью системных хранимых процедур;

П средствами Enterprise Manager.

В следующих разделах будет подробно рассмотрено управление связанными серверами обоими методами.

Использование Transact-SQL Первое, что выполняется при конфигурировании связанного сервера — это его регистрация. Как уже было сказано, информация о связанных серверах хранит ся в системной таблице sysservers. В принципе, регистрация сервера (как и любая другая операция управления связанными серверами) может быть выпол нена с помощью команды INSERT. Таким способом можно добавить новую строку в таблицу с нужными данными. Однако данный метод требует точного знания назначения всех столбцов таблицы и поведения сервера в зависимости от того или иного значения. Даже небольшая ошибка может привести к непра вильной интерпретации данных сервером, и, как следствие, невозможности об ращения к удаленному источнику данных. Лучшим решением будет использова ние системных хранимых процедур, специально предназначенных для выполнения тех или иных административных задач. Эти процедуры выполняют множество различных проверок и гарантируют, что операция будет выполнена корректно.

Регистрация связанного сервера Регистрация связанного сервера выполняется с помощью хранимой процедуры sp_addlinkedserver, имеющей синтаксис:

sp_addlinkedserver [gserver =] 'server' [, [Ssrvproduct =) 'product_name'] [, [@provider =] 'provider_name'] [, [Sdatasrc =] 'data_source'] [, [Olocation =] 'location'] t, [@provstr =] 'provider_string'] [, [Scatalog =] 'catalog'] Замечание Конкретный смысл каждого из параметров может отличаться для различных источ ников данных. Более того, не каждый из источников данных требует определения всех параметров. То есть при использовании различных поставщиков список и на значение параметров могут значительно меняться.

( Замечание } Пользователи не смогут выполнять удаленных запросов к только что добавленному связанному серверу. Дело в том, что по умолчанию доступ к связанному серверу не 284 Часть III. Администрирование разрешен. Для разрешения доступа необходимо выполнить команду EXEC sp serveroption 'ServerName', 'data a c c e s s ', 'TRUE'.

Рассмотрим назначение и использование каждого из параметров:


П [@server =] 'server' С помощью этого параметра указывается имя, которое будет присвоено конфигурируемому связанному серверу. Можно сказать, что конфигурируе мому набору данных будет присвоено имя, указанное с помощью рассматри ваемого параметра. К параметру @server предъявляется требование уни кальности в пределах сервера. То есть не должно быть связанного сервера с аналогичным именем. Параметр имеет тип данных sysname, значение по умолчанию не определено.

( Замечание ^ Параметр Sserver задает имя связанного сервера, которое будут использовать пользователи в распределенных запросах. Хотя рекомендуется указывать в качест ве имени связанного сервера имя источника данных (например, имя сервера сети), но в принципе, может быть указано любое имя. Более того, при конфигурировании двух и более связанных серверов, ссылающихся на один источник данных, обяза тельно придется использовать имена, отличающиеся от имени источника данных.

О [Ssrvproduct =] 'product_name' С помощью данного параметра указывается имя продукта, который исполь зуется на конфигурируемом сервере. В принципе, этот параметр не имеет особого значения и может быть опущен. Если в качестве удаленного сервера конфигурируется Microsoft SQL Server, то значение параметра должно быть равно 'SQL s e r v e r 1. В этом случае не нужно указывать поставщика (@provider), источник данных (gdatasrc), размещение (siocation), строку для установления соединением (gprovstr), а также имя каталога (gcataiog).

Однако параметр @server должен однозначно идентифицировать SQL Server 2000 в сети, а при конфигурировании связанного сервера для имено ванной инсталляции содержать и имя инсталляции. Параметр имеет тип данных nvarchar (128), значение по умолчанию — NULL.

[@provider =] 'provider_name' d Указанный параметр определяет идентификационный номер поставщика OLE DB, который будет использоваться для работы с конфигурируемым уда ленным сервером. Каждый поставщик имеет уникальный идентификацион ный номер. Прежде чем станет возможным использование того или иного поставщика, он должен быть установлен на локальный компьютер. В табл. 10.1 приведен список поставщиков, устанавливаемых при инсталляции SQL Server 2000. Параметр Sprovider имеет тип данных nvarchar (128), зна чение по умолчанию — NULL.

Глава 10. Административные задачи Замечание Информация об установленных поставщиках хранится в различных местах реестра.

Просмотреть список имен поставщиков можно в ключе реестра HKEY_CURRENT USER\Software\ Microsoft\Microsoft SQL Server\80\DTS\ Enumeration\OLEDBProviders.

Таблица 10.1. Поставщики, устанавливаемые с SQL Server Полное название Значение параметра Описание Sprovider SQLOLEDB Microsoft OLE DB Provider Поставщик для SQL Server for SQL Server DTSPackageDSO Microsoft OLE DB Provider Поставщик, предназначенный for DTS Packages для доступа к пакетам DTS SQLReplication.OLEDB SQL Server Replication OLE Используется для доступа к DB Provider for DTS данным, сконфигурированным для репликации MSDataShape MSDataShape Нет информации OLE DB Provider for Microsoft ADsDSOObject Позволяет обращаться к Directory Services службам каталога, например к Active Directory Windows MSOLAP Microsoft OLE DB Provider Предназначен для обеспечения for OLAP Services 8.0 доступа к системам OLAP, ра ботающим на SQL Server MSDAIPP.DSO Microsoft OLE DB Provider Предоставляет доступ к ре for Internet Publishing сурсам Интернета Microsoft Search Microsoft OLE DB Provider Позволяет обращаться к дан Collator data source for Microsoft Search ным службы Microsoft Search Microsoft OLE DB Provider MSDASQL Используется для доступа к for ODBC Drivers источникам ODBC Microsoft.Jet.OLEDB.4. Microsoft Jet 4.0 OLE DB Предназначается для доступа к данным, расположенным в Provider файлах различных систем (mdb, dbf и другие) Упрощенный поставщик для MSDAOSP Microsoft OLE DB Simple доступа к серверам SQL Server Provider Предназначен для работы с MSDAORA Microsoft OLE DB Provider серверами Oracle for Oracle Позволяет обращаться к дан MSIDXS Microsoft OLE DB Provider ным службы индексирования for Indexing Service с Замечание Технология OLE DB, в том числе и поставщики, рассматривались в главе 3.

286 Часть ///. Администрирование О [gdatasrc =] 'data_source' Данный параметр определяет местонахождение источника данных. При кон фигурировании в качестве связанного сервера SQL Server 2000 это будет се тевое имя NetBIOS компьютера, на котором установлен SQL Server 2000. Ес ли выполняется регистрация именованной инсталляции, то дополнительно должно быть указано имя инсталляции в формате имя_сервера\имя_инсталляции. Для неименованной инсталляции достаточно указать только имя компьютера. При работе с поставщиком ' M i c r o s o f t. J e t. O L E D B. 4. 0 ' это будет путь к файлу данных. Параметр имеет тип данных nvarchar (4000), значение по умолчанию — NULL.

П [glocation =] 'location' Параметр задает местонахождение базы данных. Обычно параметр e i o c a t i o n не указывается, т. к. местонахождение базы данных определяется другими методами. Параметр имеет тип данных nvarchar (4 000), значение по умолча нию — NULL.

П [Sprovstr =] 'provider_string' Этот параметр определяет символьную строку, которая может содержать до полнительные настройки, используемые при установлении соединения. Строка может включать имя и пароль учетной записи, которая будет использоваться для установления соединения. Кроме того, в ней может быть задано имя базы данных, с которой предполагается работать и некоторые другие параметры.

Большая часть параметров соединения, указываемых при конфигурировании связанного сервера, будут отображены в строке, используемой для установле ния соединения. В принципе, необходимая для установления соединения ин формация может быть указана непосредственно в строке. Однако это не совсем удобно и лучше конфигурировать все параметры по отдельности. Тем не менее, параметр Sprovstr позволяет это сделать. Обычно он служит для указания не которых специфичных опций установления соединения, не отображенных в интерфейсе Enterprise Manager и хранимой процедуры sp_addiinkedserver. Но в большинстве ситуаций, особенно при работе с широко применяемыми ис точниками данных, указание параметра dprovstr не требуется. Параметр имеет тип данных nvarchar (4000), значение по умолчанию — NULL.

О [@catalog =] 'catalog' Параметр определяет каталог на конфигурируемом связанном сервере, кото рый будет использоваться по умолчанию при установлении соединения.

Смысл каталога может различаться для разных поставщиков. Например, при работе с поставщиком SQL Server 2000 Scataiog определяет имя базы дан ных. Параметр имеет тип данных sysname, значение по умолчанию — NULL.

Мы рассмотрели все параметры, необходимые для регистрации связанного сер вера. Теперь же приведем несколько примеров, иллюстрирующих вызов храни мой процедуры s p a d d i i n k e d s e r v e r. Для начала рассмотрим регистрацию свя занного сервера SQL Server 2000:

'SQLServer sp_addlinkedserver 'STORAGE\TRELON', Глава 10. Административные задачи Замечание При конфигурировании связанного сервера не выполняется проверках на достовер ность указанных значений. То есть если в одном или более параметра была ошибка, то связанный сервер все равно будет создан. Однако при попытке обращения к та кому серверу появится сообщение об ошибке.

Этого достаточно, чтобы зарегистрировать связанный сервер SQL Server 2000.

Как видно, с помощью параметра gserver было указано имя связанного серве ра, которое позволило также однозначно идентифицировать SQL Server 2000 в сети. Параметр gsrvproduct равен 'SQL server 1, поэтому конфигурирование других параметров не требуется.

Замечание Обычными средствами не допускается конфигурирование двух связанных серверов, ссылающихся на один и тот же SQL Server 2000. Дело в том, что при указании пара метра Ssrvproduct, равного 'SQL s e r v e r не разрешается указание других па раметров. То есть имя сервера определяется с помощью параметра gserver. Од нако параметр gsrvproduct не имеет особого значения и при конфигурировании связанного сервера SQL Server 2000 можно указать другое значение, например o r a c l e ', но задать поставщика, источник и другие параметры, как при конфигури ровании связанного сервера SQL Server 2000. Также можно изменить данные непо средственно В таблице sysservers.

Для настройки связанных серверов, ссылающихся на некоторые программные продукты, необходимо конфигурирование и других параметров. Приведем при мер конфигурирования связанного сервера для Oracle:

sp_addlinkedserver gserver = 'Baxus1, Ssrvproduct = 'Oracle1, Sprovider = 'MSDAORA', @datasrc = 'ServerName' В этом примере конфигурировался связанный сервер с именем Baxus, ссылаю щийся на сервер Oracle с именем ServerName. Можно легко создать несколько связанных серверов, ссылающихся на один и тот же сервер Oracle, подставляя вместо Baxus другие значения.

Рассмотрим конфигурирование связанного сервера, ссылающегося на базу данных MS Access с помощью механизмов Jet:

sp_addlinkedserver 'Access_Pubs', 'OLE DB P r o v i d e r for J e t ', 'Microsoft.Jet.OLEDB.4.0', 'C:\MSOffice\Access\Samples\Pubs.mdb' Последний параметр (gdatasrc) определяет местонахождение файла базы дан ных, к которому необходимо получить доступ.

В завершение рассмотрим вариант конфигурирования связанного сервера SQL Server 2000, доступ к которому будет осуществляться с помощью поставщика Часть III. Администрирование ODBC. В этом примере также будет проиллюстрировано использование строки конфигурирования соединения (параметр Sprovstr):

sp_addlinkedserver Sserver = 'JavaLand', ^provider = 'MSDASQL', Oprovstr = 'DRIVER={SQL Server};

SERVER=JL;

UID=sa;

PWD=;

' Здесь создается связанный сервер JavaLand, который будет использовать по ставщика для ODBC. Параметр Sprovstr содержит информацию о свойствах соединения ODBC. В частности, указывается имя драйвера ODBC, который не обходимо использовать (SQL server), а также имя сервера, с которым нужно установить соединение ( J L ). ПОМИМО ЭТОГО, задается имя и пароль учетной за писи SQL Server, которые будут использоваться для регистрации соединения.

Как видно, соединение устанавливается под учетной записью sa, однако пароль не указан. В этом случае пользователь должен будет вводить пароль при каждом обращении к связанному серверу. Если это утомительно, то пароль можно оп ределить в строке конфигурирования соединения. Однако это снижает защи щенность данных.

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

О прямое обращение к таблице sysservers;

• использование системной хранимой процедуры sp linkedservers.

Для непосредственного просмотра таблицы достаточно выполнить следующую команду:

SELECT * F O s y s s e r v e r s RM В ответ будет выдано все содержимое таблицы sysservers. Эта таблица состоит примерно из 30 столбцов, значительная часть которых не имеет особого значе ния для пользователя. Для получения более компактной информации рекомен дуется использовать хранимую процедуру sp_iinkedservers, не имеющую па раметров. Она является всего-навсего модифицированным запросом SELECT, выводящим только 7 столбцов таблицы sysservers. Убедиться в этом можно с помощью хранимой процедуры s p h e i p t e x t, специально предназначенной для просмотра кода Transact-SQL, на основе которого был создан тот или иной объ ект базы данных. Для просмотра кода хранимой процедуры s p i i n k e d s e r v e r s необходимо в контексте базы данных Master выполнить следующую команду:

EXEC sp_helptext 'sp_linkedservers' Будет возвращен результат:

Text create proc sp_linkedservers as Глава 10. Административные задачи select SRV_NAME = srvname, SRV^PROVIDERNAME = providername, SRV_PRODUCT = srvproduct, SRV_DATASOURCE = datasource, SRV_PROVIDERSTRING = providerstring, SRV_LOCATION = location, SRV_CAT = catalog from master.dbo.sysservers order by Назначение столбцов, возвращаемых хранимой процедурой sp_imkedservers, соответствует параметрам, используемым при вызове хранимой процедуры sp_addlinkedserver.

Определение отображения Как уже говорилось, для установления соединения со связанным сервером не обходимо зарегистрироваться на нем. SQL Server 2000 позволяет выполнять ре гистрацию локальных пользователей на удаленном сервере под различными учетными записями. Для этого SQL Server 2000 определяет, какой пользователь пытается обратиться к связанному серверу, и использует для него соответст вующее имя учетной записи и (если определен) ее пароль. Соответствие локаль ных и удаленных учетных записей определяется с помощью системной храни мой процедуры sp_addlinkedsrviogin и хранится в системной таблице sysxlogins базы данных Master. Данная таблица имеет множество столбцов, описывающих различные свойства учетных записей. Мы не будем подробно рассматривать структуру таблицы sysxlogins, а только скажем, что в ней хра нится имя и пароль учетной записи, под которой будет устанавливаться соеди нение со связанным сервером.

Замечание Таблица sysxlogins предназначена для хранения информации о всех учетных за писях, участвующих в работе SQL Server 2000. В частности, в этой таблице хранит ся информация об учетных записях SQL Server, созданных на локальном сервере.

Список учетных записей, созданных на локальном SQL Server 2000, можно просмот реть с помощью представления syslogins, отображающего только те строки таб лицы sysxlogins, для которых в столбце s r v i d установлено значение NULL.

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

При этом применяется так называемое отображение в себя (self mapping). В этом случае для выполнения обращения к связанному серверу пользователи, имеющие учетные записи Windows NT, станут работать с аутентификацией Windows NT. Им автоматически будут предоставлены права, сконфигурированные для их учетной записи. Для пользователей с аутентификацией SQL Server для установления со единения будут использоваться имя и пароль, которые они указывали для уста новления соединения с локальным сервером. То есть соединение удастся устано 290 Часть III. Администрирование вить, если на обоих серверах (как локальном, так и связанном) имеются учетные записи с одинаковыми именами и паролями. В противном случае пользователь получит сообщение об ошибке регистрации (Login failed).

Синтаксис хранимой процедуры sp_addiinkedsrviogin следующий:

sp_addlinkedsrvlogin [Ormtsrvname -] 'rmtsrvname' [, [Suseself =] ' u s e s e l f ] [, [@locallogin =] 'locallogin'] [, [Srmtuser =] 'rmtuser'] [, [Ormtpassword =] 'rmtpassword'] ) ( Замечание Правами выполнения этой хранимой процедуры обладают члены фиксированных ролей сервера sysadmin и Securityadmin.

Рассмотрим назначение и использование каждого из параметров процедуры:

П [@rmtsrvname =] 'rmtsrvname' Определяет имя связанного сервера, для которого будет добавляться отобра жение. Имя сервера должно присутствовать в таблице sysservers. Параметр имеет тип данных sysname, значение по умолчанию не определено.

• [Ouseself =] 'useself Этот параметр имеет тип данных varchar(8) и может принимать значения TRUE или FALSE. По умолчанию используется значение TRUE.

Когда указывается TRUE, TO установление соединения со связанным сервером будет выполняться с правами учетной записи Windows NT пользователя, вы полняющего обращение. Подобный подход позволяет повысить безопасность обработки распределенных запросов. Конфигурирование прав пользователей полностью возлагается на администратора соответствующего связанного сер вера. Администратору локального сервера достаточно определить единствен ное отображение для учетных записей, чтобы разрешить обращаться к уда ленному серверу всем пользователям, использующим аутентификацию Windows NT и имеющим доступ к связанному серверу. В этом случае нет ну жды указывать значения параметров Srmtuser и Ormtpassword, т. к. они все равно будут проигнорированы.

Значение FALSE ВВОДИТСЯ, когда пользователи локального сервера используют аутентификацию SQL Server. В этом случае необходимо явно указать, в ка кую учетную запись связанного сервера должна быть отображена учетная за пись локального пользователя. Для этого следует задать имя и пароль учет ной записи на связанном сервере, для чего, соответственно, предназначены параметры Srmtuser И @rmtpassword.

П [Slocallogin =] 'locallogin' Параметр определяет имя локальной учетной записи, для которой выполня ется отображение. Это имя должно присутствовать в столбце name представ Глава 10. Административные задачи ления sysiogins. Значение NULL соответствует всем учетным записям как SQL Server, так и Windows NT. При этом учетные записи Windows NT могут получать доступ либо через указанную учетную запись SQL Server, либо не посредственно или через членство в группах Windows NT. Для учетных запи сей SQL Server необходимо явно указать как минимум имя учетной записи на связанном сервере. Параметр имеет тип данных sysname, по умолчанию определено значение NULL.

[Srmtuser =] 'rmtuser' d С помощью этого параметра задается имя учетной записи, имеющейся на конфигурируемом связанном сервере. При попытке пользователя, указанного с помощью предыдущего параметра, обратиться к связанному серверу, для установления соединения будет использоваться учетная запись, указанная с помощью рассматриваемого параметра. Однако сервер ведет себя подобным образом, только если значение параметра guseseif равно FALSE. Параметр имеет тип данных sysname и значение NULL ПО умолчанию.

О [grmtpassword =] 'rmtpassword' Данный параметр определяет пароль для учетной записи, указанной с помо щью предыдущего параметра. Параметр имеет тип данных sysname и значе ние NULL по умолчанию. Однако значение NULL разрешается применять, ко гда удаленный пользователь имеет пустой пароль. Использование NULL В остальных случаях приведет к выводу сообщения об ошибке при попытке обращения к связанному серверу.

Мы рассмотрели все параметры хранимой процедуры spaddiinkedsrviogin. Рас смотрим несколько примеров вызова этой хранимой процедуры. Предложенный ниже вариант иллюстрирует предоставление доступа к серверу STORAGE\Treicn для учетной записи Windows NT с именем storage\Administrator:

EE X C sp_addlinkedsrvlogin 'STORAGE\Trelon', 'false1, STORAGE\Administrator', •sa1, [;

k.by@[]wb,f&gfhec' В этом примере учетная запись Windows NT будет регистрироваться на связан ном сервере под учетной записью sa. В следующем примере той же учетной за писи Windows NT предоставляется доступ к тому же серверу с правами учетной записи Windows NT:

EXEC sp_addlinkedsrvlogin 'STORAGENTrelon', 'true', STORAGE\Administrator' ( Замечание ^ Если для указанной с помощью параметра @locallogin учетной записи уже сущест вовало отображение в таблице sysxlogins, оно будет удалено, а вместо него встав лено новое с измененными свойствами. Таким образом, для любой учетной записи может быть определено только одно отображение для каждого связанного сервера.

292 Часть III. Администрирование В завершение рассмотрим отображение локальной учетной записи sa в одно именную учетную запись на связанном сервере:

EXEC sp_addlinkedsrvlogin 'STORAGE\Trelon', 'false', 'sa', 'sa', NULL В данном примере в качестве пароля указано значение NULL. ЭТО означает, что на связанном сервере для учетной записи за не установлено никакого пароля.

В данном случае вместо NULL МОЖНО было использовать пустую строку.



Pages:     | 1 |   ...   | 6 | 7 || 9 | 10 |   ...   | 33 |
 





 
© 2013 www.libed.ru - «Бесплатная библиотека научно-практических конференций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.