Эффективная установка SQL Server 2000Источник: Windows IT Pro
Подробности процесса развертыванияРазработчики Microsoft стараются максимально упростить процесс установки программного обеспечения, в том числе и SQL Server 2000. Достаточно загрузить файл setupsql.exe из папки x86\setup с установочного компакт-диска, указать некоторые настройки в диалоговых окнах, и дальше установка пройдет без какого-либо вмешательства со стороны пользователя. Инсталляцию SQL Server 2000 можно выполнить, даже не понимая, что означает выбор того или иного параметра, - просто щелкать Next в большинстве диалоговых окон. Не стоит, однако, относиться к процессу установки слишком небрежно. Я настоятельно рекомендую обращать внимание на каждый параметр и задумываться о последствиях своих действий: неправильная настройка сортировки, например, может привести к трудно исправляемой ошибке, а принятие аутентификации по умолчанию - создать пробелы в системе безопасности.Мы рассмотрим наиболее важные моменты стандартной установки, в том числе конфигурацию экземпляров, системы безопасности, сортировки и сетевых библиотек.ЭкземплярыНаходясь непосредственно на месте установки, выполняют стандартную установку (которая отличается от автоматизированной и удаленной установки, см. ниже). При вызове программы setupsql.exe запускается мастер установки. Затем появляются два диалоговых окна - Welcome и Computer Name, после чего необходимо выбрать конфигурацию совместно работающих экземпляров. SQL Server 2000 допускает установку нескольких экземпляров SQL Server на одну машину. (Более подробно об экземплярах SQL Server рассказано в статьях Кэлен Дилани "Multiple Instances", July 2000, InstantDoc ID 8686 и "Managing Multiple Instances", August 2000, InstantDoc ID 9021.) Для настройки нескольких совместно работающих экземпляров система выводит два диалоговых окна.
Первое окно, изображенное на Экране 1, позволяет сделать выбор между установкой нового экземпляра и модернизацией существующего. При выборе установки нового экземпляра появляется диалоговое окно Instance Name, показанное на Экране 2. Далее можно либо указать имя экземпляра, либо поставить флажок Default для установки экземпляра по умолчанию.
Выбирая экземпляры, следует принять во внимание несколько фактов. Если на машине экземпляра по умолчанию нет и планируется поддержка работы версий SQL Server 2000 и 7.0 на одной и той же машине, то в качестве экземпляра по умолчанию нельзя устанавливать SQL Server 2000. SQL Server 7.0 именованные экземпляры не поддерживает, поэтому как раз он и должен быть экземпляром по умолчанию. Нельзя переделать именованный экземпляр в экземпляр, назначаемый по умолчанию, и наоборот, кроме как удаляя и затем устанавливая SQL Server заново. К тому же нельзя поменять имя именованного экземпляра после того, как он установлен. Однако можно установить SQL Server 7.0 после инсталляции SQL Server 2000 при условии, что экземпляр по умолчанию еще не был установлен. Если установлен SQL Server 7.0, его можно модернизировать, выбирая способ модернизации в диалоговом окне Installation Selection и указывая в следующем диалоговом окне, что нужно модернизировать экземпляр, назначенный по умолчанию. В таком случае SQL Server 2000 станет экземпляром по умолчанию, а SQL Server 7.0 будет с компьютера удален. Чтобы сохранить обе версии, следует устанавливать SQL Server 2000 в качестве именованного экземпляра. После установки в SQL Server 2000 с помощью инструментов резервного копирования и восстановления, присоединения и отсоединения, служб преобразования данных (Data Transformation Services, DTS) или мастера копирования баз данных (Copy Database Wizard) можно загрузить базы данных SQL Server 7.0. Независимо от того, какой путь выбран для модернизации предыдущей версии до SQL Server 2000, нельзя указать более одной установки для одних и тех же копий баз данных, поэтому каждая установка должна иметь собственную копию каждой базы данных. Теперь рассмотрим функцию SQL Server 7.0 под названием переключатель версий. Она обеспечивает возможность совместного существования на одном компьютере SQL Server 7.0 и SQL Server 6.5. Как бы то ни было, в данный момент времени может использоваться только одна из версий; вторая будет бездействовать. При вызове переключатель версий активизирует бездействующую версию и отключает активную. Если на компьютере установлен SQL Server 6.5, который не настроен на переключение версий с SQL Server 7.0, то программа инсталляции предложит на выбор две возможности: модернизировать SQL Server 6.5 до назначаемого по умолчанию экземпляра SQL Server 2000 с созданием переключателя версий между SQL Server 6.5 и SQL Server 2000, либо модернизировать SQL Server 6.5 до именованного экземпляра SQL Server 2000. В отличие от модернизации с SQL Server 7.0, в процессе которой текущая версия стирается, SQL Server 6.5 остается на компьютере независимо от выбранного пути модернизации до SQL Server 2000. Если на компьютере установлены и SQL Server 6.5 и SQL Server 7.0 и они допускают переключение версий, а модернизировать существующие экземпляры не нужно, то на этот же компьютер можно благополучно установить именованные экземпляры SQL Server 2000 и поддерживать работу всех трех версий. Однако наличие переключателя позволяет задействовать в данный момент только одну версию - 6.5 или 7.0, тогда как именованные экземпляры могут работать одновременно. После указания параметров совместной работы экземпляров происходит переход к диалоговому окну Setup Type. Пользовательская установкаВ диалоговом окне Setup Type (см. Экран 3) мастер установки просит выбрать один из трех типов установки: обычная (Typical), минимальная (Minimum) и пользовательская (Custom). При выборе Typical или Minimum настройка компонентов, сортировки и сетевых библиотек производится SQL Server с помощью параметров, установленных по умолчанию. Поскольку обычная установка может вызвать в дальнейшем определенные проблемы, я рекомендую всегда выбирать пользовательский тип установки, даже если параметры, принятые по умолчанию, вполне устраивают. Если потом вдруг окажется, что параметры по умолчанию не годятся, то после установки будут трудности с изменением некоторых из указанных выше настроек - особенно с настройками сортировки. Пользовательская установка позволяет дважды проверить выбранные настройки. По-моему, лучше пройти несколько лишних диалоговых окон, но зато точно знать, что настройки выбраны правильно.
БезопасностьВ процессе установки информация, относящаяся к вопросам безопасности, указывается в двух диалоговых окнах: Services Accounts (см. Экран 4) и Authentication Mode (см. Экран 5). В окне Services Accounts производится точная настройка учетных записей для служб SQL Server и SQL Server Agent. Каждая служба запускается операционной системой от имени учетной записи, указанной для нее в этом окне, и работает в операционной системе в контексте безопасности данной учетной записи. Например, когда выполняется резервное копирование, SQL Server проверяет, имеет ли login, используемый для подключения к SQL Server, соответствующее разрешение BACKUP DATABASE. Как бы то ни было, для создания устройства резервного копирования и записи на него SQL Server должен сформировать файл на диске или сетевом ресурсе общего доступа, а эта операция использует контекст безопасности учетной записи службы SQL Server.
Аналогичным образом служба SQL Server Agent запускает программы в рамках SQL Server и операционной системы или в сети в контексте безопасности учетной записи службы SQL Server Agent. Несмотря на то что учетная запись, не имеющая административных привилегий, может запустить службу SQL Server, лучше все-таки сделать учетную запись для службы SQL Server членом локальной группы Administrators. В противном случае придется в явной форме назначать учетной записи все нужные права (например, создавать файлы базы данных). Также нужно назначить учетной записи службы подходящие полномочия для работы в сети (например, создавать и записывать файлы на сетевые ресурсы, используемые SQL Server в качестве хранилищ резервных копий).
Если попытаться запустить службу SQL Server Agent с учетной записью, которая не имеет административных привилегий на данной машине, ничего не получится. А если SQL Server Agent выполняет какие-либо действия на других машинах сети, такие, как репликация или работа с несколькими серверами одновременно, то нужно использовать доменную учетную запись, имеющую также соответствующие полномочия на других машинах. На Экране 6 изображен домен с тремя машинами SQL Server в мультисерверной среде, в которой главный сервер управляет автоматическими действиями на подчиненных серверах. Srv1 выступает в роли главного сервера, а Srv2 и Srv3 - в роли подчиненных. Поскольку обе стороны (главная и подчиненная) должны взаимодействовать друг с другом, учетная запись службы SQL Server Agent главного сервера обязательно должна иметь подходящие привилегии на подчиненных серверах, и наоборот. Простейший способ настроить конфигурацию такой среды состоит в том, чтобы создать одну доменную учетную запись (например, Domain1\SQLService, как на Экране 6), сделать ее членом локальной группы Administrators на всех серверах и запускать все службы SQL Server Agent с этой учетной записью.
В диалоговом окне Authentication Mode (см. Экран 5) можно выбрать один из вариантов аутентификации: либо разрешить только пароли с аутентификацией Windows (Windows Authentication Mode), либо задействовать оба типа паролей - и Windows, и SQL Server (Mixed Mode). В нем также указывается пароль для системного администратора SQL Server. Аутентификация средствами Windows предусмотрена режимом безопасности по умолчанию и рекомендуется в большинстве случаев. Однако, исходя из соображений безопасности, я рекомендую выбрать режим Mixed Mode и указать пароль для учетной записи системного администратора, перейдя на режим аутентификации средствами Windows после завершения установки и выполнения еще нескольких настроек системы безопасности. Программа установки создает login системного администратора для доступа к SQL Server и делает его членом серверной роли sysadmin. Если в качестве режима безопасности сервера выбирается аутентификация средствами Windows, то в процессе установки создается отключенный login системного администратора (поскольку отключена аутентификация средствами SQL Server) с пустым паролем. Можно изменить пароль системного администратора после установки, и я настоятельно рекомендую это сделать, но выбор изначального режима аутентификации средствами Windows опасен тем, что впоследствии можно забыть изменить пароль или оставить его пустым, полагая, что login системного администратора отключен. Независимо от того, какой выбран режим, программа установки создает login на уровне Windows для группы BUILTIN\Administrators, которая привязана к локальной группе Administrators. Создание такого login означает, что все члены локальной группы Administrators, включая доменную группу Domain Admins, являются также членами серверной роли sysadmin данного SQL Server. Предоставлять сетевым и локальным администраторам неограниченные полномочия в SQL Server не стоит, чтобы не нарушить систему безопасности, поэтому группу BUILTIN\ Administrators можно удалить из серверной роли sysadmin. Другой путь - полностью удалить из SQL Server автоматически создаваемый login и создать login для владельцев роли sysadmin из числа администраторов баз данных, а не из числа сетевых администраторов. Если последовать одной из этих рекомендаций, необходимо учесть, что важно сначала создать login для администраторов баз данных - владельцев роли sysadmin, и только тогда удалять login группы BUILTIN\Administrators. Если выбран режим аутентификации средствами Windows и происходит удаление всех login для членов роли sysadmin до того, как создан login для администраторов баз данных, можно лишиться возможности выполнять какие-либо административные задачи в SQL Server, в том числе создание новых login. Попав в такую ловушку, следует сменить режим аутентификации SQL Server на Mixed Mode посредством редактирования в реестре параметра HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ \MSSQLServer\LoginMode. Необходимо поменять значение параметра на 2 и перезапустить службу SQL Server. Хотя управлять режимом аутентификации через реестр очень удобно, у этого метода есть и свои недостатки. Любой, кто имеет право редактировать данный параметр, включая сетевых и локальных администраторов, может менять режим аутентификации SQL Server. Если установить SQL Server в режиме Windows Authentication Mode, учетная запись системного администратора будет отключена, но все еще будет иметь пустой пароль. Если после этого поменять режим аутентификации SQL Server на Mixed Mode (активизируя таким образом login системного администратора), то в качестве системного администратора сможет подключиться кто угодно. Поэтому необходимо либо сменить пароль системного администратора сразу после окончания установки, либо выбрать режим Mixed Mode и назначить пароль для системного администратора до ее завершения. СортировкаЗатем нужно выбрать параметры сортировки. Настройки сортировки определяют способ сравнения символов на разных языках, уникальность имен объектов и значений столбцов, а также правила сортировки. Указание параметров сортировки производится в диалоговом окне Collation Settings (см. Экран 7), и в нем следует выбрать тип сортировки - либо сортировку SQL Server, либо сортировку Windows. Выбирать сортировку SQL Server следует в том случае, если нужна обратная совместимость с предыдущими выпусками SQL Server - например, если необходимо использовать репликацию между SQL Server 2000 и SQL Server более ранней версии. В других случаях следует выбирать сортировку Windows. В настройках сортировки SQL Server 2000 (обоих типов - SQL Server и Windows) объединены три независимые настройки, реализованные в предыдущих выпусках: Character Set, Sort Order и Unicode Collation. Помимо слияния трех старых настроек в одну, SQL Server 2000 обладает гораздо большей гибкостью при настройке механизма сортировки по сравнению с предыдущими версиями. Обсуждение старых настроек выходит за рамки этой статьи, но при желании можно обратиться к Books Online (BOL) в SQL Server 7.0 и 6.5.
Настройки сортировки, которые выбираются во время установки SQL Server 2000, действуют для системных баз данных. Для того чтобы изменить настройки сортировки системных баз данных после установки, нужно записать все системные объекты (например, пароли, сообщения, задачи) и запустить программу rebuildm.exe, которая заново создаст все системные базы данных с новыми параметрами сортировки. Однако экспортировать всю информацию пользовательских баз данных из SQL Server и снова импортировать ее обратно после выполнения rebuildm.exe, как это делается в SQL Server 7.0, не требуется. Нужно выполнить только повторное присоединение пользовательских баз данных. Чтобы настроить сортировку пользовательских баз данных, можно взять настройки, отличные от серверных настроек сортировки по умолчанию (т. е. системной базы данных Model) или даже присоединить или восстановить базу данных с настройками сортировки, отличными от серверных настроек. Позже для пользовательской базы данных настройки сортировки по умолчанию можно сменить. Для определенного столбца можно задать свою сортировку, отличную от сортировки по умолчанию, установленной для всей базы данных. Можно даже позднее изменить сортировку столбца, если по нему не было создано ни одного индекса. Несмотря на гибкость SQL Server 2000 в отношении сортировки, нельзя недооценивать настройку, выполняемую в процессе установки. Как отмечалось выше, серверная сортировка применяется ко всем системным базам данных и определяет правила сортировки для всех записанных в системных базах данных объектов (например, регистрационных имен, имен баз данных). Более того, сортировка базы данных tempdb - это также серверная сортировка, выбираемая во время установки. При создании временной таблицы ее столбцы используют сортировку базы данных tempdb, но лишь до тех пор, пока не установлен параметр COLLATE database_default в свойствах каждого столбца для применения сортировки базы данных, к которой выполняется подключение. Сетевые библиотекиПосле настройки параметров сортировки нужно перейти к диалоговому окну Network Libraries (см. Экран 8).
В Network Library указывается протокол, используемый клиентским приложением для взаимодействия с SQL Server. И клиентская, и серверная части SQL Server должны иметь хотя бы один согласованный протокол из Network Library, через который они могли бы держать связь. В диалоговом окне Network Libraries устанавливаются протоколы, которые SQL Server будет использовать для связи с клиентскими приложениями. В SQL Server 6.5 аутентификацию средствами Windows поддерживали только два протокола: Named Pipes и Multi-Protocol. Во всех остальных сетевых библиотеках разрешалась лишь аутентификация SQL Server. Поэтому для SQL Server 6.5 одним из факторов, влияющих на выбор сетевой библиотеки, является тип регистрационных данных. Кроме того, шифрование данных допускает только Multi-Protocol, поэтому если нужно, чтобы SQL Server 6.5 поддерживал шифрование данных, следует выбрать именно этот протокол. SQL Server 7.0 в этом отношении более гибкий - аутентификацию Windows в нем поддерживают все протоколы, но Multi-Protocol остается единственным протоколом, поддерживающим шифрование данных. В SQL Server 2000 можно вызвать шифрование данных, используя Secure Sockets Layer (SSL) со всеми сетевыми библиотеками через SQL Server Network Utility и SQL Server Client Network Utility, поэтому шифрование не определяет выбор сетевой библиотеки. И еще, в SQL Server 2000 протокол Multi-Protocol не поддерживает схему именования экземпляров SERVERNAME\INSTANCENAME, поэтому не следует выбирать Multi-Protocol, если требуется использовать именованные экземпляры. Вероятно, наиболее широко распространенная сетевая библиотека в SQL Server 2000 - это TCP/IP Sockets. Она надежна, допускает аутентификацию Windows, и с ней, если нужно, можно использовать шифрование SSL. Те, кто работал с предыдущими выпусками SQL Server, знают, что назначаемый по умолчанию порт TCP есть порт 1433. При использовании порта по умолчанию клиентские соединения могут не указывать номер порта, в отличие от имени сервера или IP-адреса. Но SQL Server 2000 поддерживает множественные экземпляры, которые не могут все вместе использовать один и тот же номер порта. Поэтому при установке именованного экземпляра программа установки в качестве номера порта использует 0. Это означает, что при первом запуске SQL Server он динамически выбирает свободный порт и сохраняет его постоянно или до тех пор, пока его не сменят. Как же может клиентское приложение обращаться к SQL Server, указывая только имя/IP-адрес+имя экземпляра, без номера порта? Служба подключения SQL Server 2000 воспринимает клиентские запросы на подключение к SQL Server через порт 1433, затем перенаправляет запрос подходящему экземпляру, проверяя имя экземпляра в запросе и сопоставляя его с номером порта экземпляра. Автоматизированная и удаленная установкаТеперь, разобравшись со стандартной установкой, рассмотрим автоматизированную. Программа setupsql.exe позволяет создать файл, содержащий ответы на вопросы, которые выводятся в процессе установки в диалоговых окнах. Впоследствии можно запустить установку с помощью одной команды, вызывающей программу setupsql.exe, с файлом ответов в качестве аргумента. Такой тип установки, не требующей никакого вмешательства пользователя, называется автоматизированным. Для создания файла ответов нужно запустить программу установки, выбрать Advanced Options в диалоговом окне Installation Selection, а затем в диалоговом окне, изображенном на Экране 9, выбрать Record Unattended .ISS file. Программа установки предложит обычные диалоговые окна, в них нужно заполнить все необходимые позиции. По окончании выбора параметров программа установки создает файл с именем setup.iss, размещенный в папке \WINNT.
Для включения автоматизированной установки необходимо запустить программу setupsql.exe с параметром -s для работы в фоновом режиме и с параметром -f1 - для указания файла ответов. Например, для включения автоматизированной установки в фоновом режиме, при котором пользователь не уведомляется об окончании установки, можно применить следующую команду: \setupsql.exe -s -f1 \setup.iss Если нужно знать, в какой момент установка будет завершена, программу setupsql.exe требуется запустить из командной строки или из пакетного файла следующим образом: start /wait \setupsql.exe -s -f1 \setup.iss В таком случае управление не перейдет к следующей команде до тех пор, пока не закончится установка. Использование параметра start /wait особенно важно при запуске процесса установки из пакетного файла, который содержит другие действия, зависящие от установки. Например, предположим, что требуется написать пакетный файл, который выполняет автоматизированную установку экземпляра с именем INST1, запускает службу SQL Server и файл сценария .sql, создающий базу данных и ее объекты (таблицы, хранимые процедуры). Пакетный файл может выглядеть примерно так: start /wait D:\X86\Setup\setupsql.exe -s -f1 C:\WINNT\setup.iss NET START MSSQL$INST1 OSQL /E /I "c:\data\scripts\createappdb.sql" Если параметр start /wait не использовать, то, как только начинается установка, в пакетном файле запускается на выполнение вторая команда, и строка NET START пытается запустить несуществующую службу. Устранять ошибки автоматизированной установки сложнее, чем стандартной. В режиме стандартной установки программа обычно информирует пользователя, когда сталкивается с проблемой - на экран выводится диалоговое окно с сообщением об ошибке в сопровождении сигнала. Автоматизированная установка просто прекращается без каких-либо сообщений. Чтобы показать, как нужно диагностировать ошибки при автоматизированной установке, я расскажу о нескольких проблемах, с которыми мне уже пришлось столкнуться. Предположим, что на сервере только что закончена установка другого продукта, и теперь запускается автоматизированная установка SQL Server. Программа установки обнаруживает, что сервер не был перезагружен после предыдущей установки и прерывает процесс без предупреждения. Если держать окно Task Manager открытым, можно заметить, что программа setupsql.exe не запущена, а SQL Server установлен не был. Следует также проверить системный журнал. При успешной установке файл \WINNT\setup.log должен показывать код ошибки 0. Однако в описанной мною ситуации он, возможно, будет равен 1, что означает ошибку общего характера. Кроме того, может появиться следующее сообщение об ошибке: A previous program installation created pending file operations on the installation machine. You must restart the computer before running setup. ("Предыдущая программа установки создала файл отложенных операций. Перед запуском программ установки нужно перезагрузить компьютер".) Вот еще одна ошибка, с которой я сталкивался несколько раз во время выполнения автоматизированной установки: Dialog boxes are out of order. ("Нарушен порядок следования диалоговых окон".) Проблема обнаруживала себя сразу после запуска установки: при открытии окна Task Manager можно было увидеть, что программа setupsql.exe работает, но никаких действий по загрузке или выводу информации не происходит, как это должно было быть при правильно выполняющейся установке. Вдобавок, не были сформированы папки, обычно создаваемые в процессе установки в \Program Files\Microsoft SQL Server. Складывалось впечатление, что программа setupsql.exe не использует ресурсы центрального процессора или ресурсы ввода/вывода и просто исчезает примерно через 10 мин. Файл setup.log показывал код ошибки 12, а файл sqlstp.log не показывал никаких ошибок - фактически он казался незавершенным. Файл sqlstp.log не содержал никакого сообщения об окончании выполнения программы, а только информацию о его начале: Begin Action: DialogShow. В BOL об ошибке с кодом 12 говорится следующее: "Нарушен порядок следования диалоговых окон. Это ошибка общего характера, она возникает, когда диалоговые окна описываются в файле ответов (Setup.iss) в неправильном порядке. Это может быть вызвано неполадками в системе во время создания файла Setup.iss". Естественно, стоило мне перезаписать файл Setup.iss, как автоматизированная установка завершилась успешно. В дополнение к установке SQL Server 2000 можно выполнить автоматизированную установку пакета исправлений для SQL Server 2000. Для применения пакета обновлений к экземпляру, назначенному по умолчанию, необходимо вызвать программу setupsql.exe из папки этого пакета обновлений и указать в качестве аргумента файл sql2kdef.iss, находящийся в корневой папке пакета обновлений. Например, если установочные файлы пакета обновлений расположены в папке c:\sql2ksp2, нужно ввести следующую команду: start /wait c:\sql2ksp2\x86\setup\setupsql.exe -s -f1 c:\sql2ksp2\sql2kdef.iss Для применения пакета исправлений к именованному экземпляру следует использовать файл ответов sql2knm.iss, но прежде необходимо проверить две следующие строки в этом файле и правильно отразить в них имя экземпляра: InstanceName=INSTANCE_NAME NMPPipeName=\\.\pipe\MSSQL$INSTANCE_NAME\sql \query Существует еще одна дополнительная возможность, которая позволяет устанавливать SQL Server 2000 на удаленный компьютер. Файл ответов setup.iss записывается на локальном компьютере, копируется на удаленную машину, а затем программа setupsql.exe вместе с файлом setup.iss запускается уже на ней. Однако можно еще и оградить себя от некоторых проблем, запуская программу setupsql.exe на локальном компьютере, выбирая в диалоговом окне Computer Name пункт Remote Computer и указывая имя компьютера, на котором нужно выполнить установку. После щелчка на Next появится диалоговое окно Remote Setup Information (см. Экран 10).
Далее следует указать параметры учетной записи (имя пользователя, пароль, домен), полный путь (в соглашениях UNC) для папки назначения (например, \\LABYRINTH\C$\Program Files\Microsoft SQL Server) и полный путь (по UNC) для ресурса - источника файлов установки (например, \\SERVER1\Install\SQL2KE\X86\Setup). Затем программа установки проведет пользователя через ряд обычных диалоговых окон и создаст файл setup.iss в соответствии со сделанным выбором. После этого программа копирует файл setup.iss в папку \WINNT компьютера назначения и запускает программу setupsql.exe вместе с копией файла setup.iss. Если открыть окно Task Manager на удаленном компьютере, можно увидеть, что программа setupsql.exe в процессе установки загружает и отключает другие программы. На локальном компьютере можно будет наблюдать, как происходит удаленная установка, и когда она завершится, появится соответствующее сообщение. ЗаключениеНесмотря на то что базовая установка довольно проста, выбирать параметры следует очень внимательно. Правильный выбор параметров установки дает прочную основу для администрирования SQL Server. А если выполнение автоматизированной или удаленной установки кажется сложным, надеюсь, эта статья поможет справиться с подобными задачами. ИЦИК БЕН-ГАН - старший преподаватель на курсах по SQL Server в колледже Hi-Tech в Израиле. Имеет сертификаты MCDBA, MCSE+I, MCSD, MCT и SQL Server MVP. |