(Возврат на основную страницу)
Брайан Найт (Brian Knight)
Свершилось! Выход этого пакета обновлений SQL Server сопровождался куда меньшей помпой, хотя он не менее важен для администраторов и разработчиков БД
Что означает выход этого пакета лично для вас? Ну, хотя по размеру он и не дотягивает до Service Pack 1, зато содержит исправления для более чем 50 ошибок в SQL Server 2000 и Analysis Services. Кроме того, туда входит MDAC 2.6.2, который можно установить как автоматически, так и независимо, во время установки пакета. Результаты тестирования бета-версии пакета обновлений, которому в первую очередь подверглись исправления ошибок, показали, что он должен быть установлен каждым пользователем SQL Server 2000.
На какие машины следует установить SP2
Пакет обновлений должен быть установлен на всех серверах и клиентских машинах, где используется SQL Server. При наличии интернет- или любого другого приложения, использующего SQL Server, непременно следует установить обновление MDAC 2.6.2 по крайней мере, на клиенте или web-сервере. Минимальную установку MDAC 2.6.2 можно выполнить, запустив \x86\other\sqlredis.exe. эта программа дополнительно устанавливает на клиентской машине несколько DLL-файлов, чтобы (среди прочего) устранить ошибки в DTS. Файл sqlredis.exe можно свободно копировать на клиентские машины. Условия лицензионного соглашения для его использования находятся в файле redist.txt в корневом каталоге пакета обновлений. Во время работы эта программа также обновляет:
До начала установки
Чтобы установить пакет обновлений, нужно загрузить с узла http://www.microsoft.com/sql/downloads/2000/sp2.asp соответствующие файлы. Пакет существует в трех вариантах: SQL Server 2000, Desktop Engine и Analysis Services. В большинстве случаев для обновления SQL Server потребуется файл sql2ksp2.exe. Он будет работать в любой редакции SQL Server, кроме Desktop Engine.
Если вы не знаете, какой из пакетов обновлений вам нужен, откройте Query Analyzer и выполните команду SELECT @@VERSION. Вот список версий и соответствующих им пакетов обновлений:
Чтобы определить версию служб Analysis Services, работающих на вашем компьютере, просто откройте Analysis Manager и выберите в меню Help пункт About Analysis Services. Вот список версий Analysis Manager:
Прежде чем устанавливать пакет обновлений, распакуйте установочный файл в каталог, имя которого не содержит пробелов, и сделайте резервные копии своих БД. Если планируется установить пакет обновлений для Analysis Services, создайте резервные копии всех кубов, а также реестра. Своевременное резервное копирование очень важно, так как выполнить откат установки ТРУДНО. На этом мы остановимся чуть позже, но важность наличия резервных копий необходимо подчеркнуть именно сейчас. Если пакет обновлений устанавливается в реплицируемую систему, проследите, чтобы он был установлен сначала на Дистрибьюторе, затем на Издателе, и только после этого — на всех Подписчиках. Также, прежде чем приступать к установке пакета, непременно следует остановить все сервисы, имеющие отношение к SQL Server. К ним относятся Microsoft Component Services, Microsoft Message Queuing и Microsoft COM Transaction Integrator (если они есть на вашей машине). Кроме того, Панель управления обязательно должна быть закрыта.
Еще одно замечание касается «горячих» обновлений (hot fixes), которые могли применяться. В этом случае необходимо убедиться, что в составе пакета обновлений имеются необходимые библиотеки. В противном случае вы рискуете стереть критически важные DLL, необходимые для исправления ошибок. Во время установки этого пакета обновлений выполняется замена большинства исполнимых файлов и библиотек SQL Server, и, если не соблюдать осторожность, можно нарушить целостность системы.
Также замечу, что в SP2 входят все исправления из SP1. Поэтому, если первый пакет обновлений до сих пор не был установлен, скорее всего, следует протестировать его до установки в рабочей системе.
Процедура установки
Установка пакета обновления не должна вызвать затруднений. При установке пакета на несколько компьютеров я рекомендую создать сценарий для автоматической установки, который позволит установить пакет на все компьютеры быстро и без участия оператора. Распаковав файлы, запустите программу setupsql.exe из каталога \x86\setup. При установке из сети следует запускать именно этот файл, а не setup.bat, также расположенный в корневом каталоге.
Первые несколько экранов содержат запросы на выбор экземпляра SQL Server, на который следует установить пакет обновлений, а также следует ли устанавливать пакет на виртуальный сервер. Эти запросы свидетельствуют о некоторых существенных обновлениях SQL Server 2000. Во-первых, пакет поддерживает экземпляры сервера. И, что более важно, он также поддерживает кластеры. Те, кто занимался установкой пакетов обновлений раньше, знают, какое это благо. Если пакет обновлений устанавливается на кластерный сервер, проследите, чтобы все узлы — участники кластера — были подключены. Во-вторых, пакет обновлений должен устанавливаться на сервере, являющемся владельцем ресурсов SQL Server на момент установки. Может понадобиться перезагрузка, поэтому подготовьте окно обслуживания. Поскольку пакет поддерживает кластеры, достаточно установить его на каждом виртуальном сервере кластера. Для кластеров Active/Active установку придется выполнять дважды, поскольку они работают под управлением двух экземпляров сервера. Во время установки пакета обновлений все необходимые двоичные файлы автоматически копируются на каждый экземпляр сервера.
Если используется аутентификация средствами Windows, программа установки попросит ввести имя и пароль системного администратора сервера. Если используется аутентификация средствами SQL Server, будет достаточно пароля для учетного имени sa. На компьютерах под управлением Windows 98/Me доступна только аутентификация средствами SQL Server. Если SQL Server еще не запущен, он запускается сейчас.
Первый шаг установки — обновление MDAC, которое происходит очень быстро. Далее выполняется копирование файлов программы установки. Последним идет самый долгий шаг, когда запускаются различные сценарии для обновления системного каталога. Поэтому так важно создать его резервную копию перед установкой пакета обновлений. Аварийное завершение программы установки может оставить SQL Server в нестабильном состоянии, поскольку в этом случае системный каталог может быть обновлен лишь наполовину или скопирована лишь малая часть нужных файлов. Если ошибка во время установки не исчезает, не оставляйте сервер в нестабильном состоянии, а откатите установку пакета обновлений (см. инструкции ниже). После завершения установки программа спрашивает, следует ли создать резервные копии БД master и msdb. Это необходимо, поскольку эти БД могут быть обновлены во время установки. После установки пакета обновлений программа может попросить перезагрузить систему. Я рекомендую перезагрузиться в любом случае, даже если запроса на перезагрузку не было, поскольку это гарантирует корректный запуск всех остановленных ранее сервисов.
Завершающим шагом установки является применение «горячего» обновления, которое можно найти на компакт-диске пакета обновлений (каталог \EQHotfix) или загрузить из сети. Это обновление обрабатывает English Query, заменяя DLL- и EQD-файлы, так что я советую устанавливать его, только если вы пользуетесь English Query.
Откат установки
Чтобы откатить пакет обновлений, Вам придется выполнить ряд действий. Чтобы удалить пакет, сначала отключите свои БД с помощью команды SP_DETACHDB. Затем удалите SQL Server 2000 и повторите установку базовой версии SQL Server 2000. В завершение нужно снова подключить БД к серверу с помощью команды SP_ATTACHDB.
Переустановив SQL Server 2000, заново создайте учетные имена пользователей БД. В некоторых случаях придется переопределить соответствия между учетными именами и пользователями с помощью хранимой процедуры sp_change_users_login. Далее нужно заново создать запланированные задания (или восстановить БД msdb из сделанной ранее резервной копии). Наконец, установите все необходимые приложения и повторите все изменения, внесенные в БД model. Как видите, намного легче восстановить все из резервной копии, сделанной заранее. Если есть резервные копии, переустановите SQL Server и восстановите все необходимое с их помощью.
Краткое описание исправленных ошибок
В этом пакете имеется стандартный набор исправлений, который я видел в любом пакете обновлений. По-видимому, в нем действительно много исправлений для репликации. Если вы активно используете любой тип репликации, то, с одной стороны, этот пакет заслуживает дополнительного тестирования перед установкой, а с другой — причин установить его становится больше. Этот пакет также необходим, если вы являетесь пользователем Visual Studio, так как он исправляет ряд ошибок, обнаруженных при использовании SP1. SP2 также исправляет серьезную утечку памяти в SQL Mail. Действительно, список исправлений этого пакета довольно скромный по сравнению с предыдущими пакетами обновлений.
Полный список исправлений см. в статье службы технической поддержки Microsoft по адресу http://support.microsoft.com/default.aspx?scid=kb;en-us;Q290211.
Заключение
После подробного изучения SP2 и месячного бета-тестирования я определенно должен сказать, что устанавливать этот пакет легко. Естественно, из того, что он работал у меня в лаборатории и рабочей системе, вовсе не следует, что он будет работать и у вас. Всегда следует соблюдать осторожность при установке пакета обновлений от производителя ПО, поскольку она может иметь и негативные последствия.
Дэйв Мендлен (Dave Mendlen)
Статья посвящена использованию связанных серверов — новой функции, появившейся в Microsoft SQL Server 7.0, для создания гетерогенных запросов к данным из различных источников, таких как Oracle, Access и SQL Server 7.0. Рассматриваются следующие вопросы:
Новая функция в SQL Server 7.0 — связанные серверы — позволяет создавать распределенные запросы для доступа к данным из БД Oracle, DB2, Sybase и любых других источников, для которых имеются провайдеры OLE DB. Теперь появилась возможность исполнять распределенные запросы, обновления, команды и транзакции на различных источниках данных и получать результаты в виде единого результирующего набора. В частности, можно создать Web-страницу, соединяющую сведения о покупателях из БД DB2 с информацией о заказах, хранящейся в БД Oracle, а также с данными о платежах из БД Informix.
Энди Уоррен (Andy Warren)
В нашем деле мы много времени уделяем разговорам о так называемых «лучших приемах» — способах, позволяющих выполнить то или иное действие с максимальной эффективностью (точностью и т. п.), доказавших со временем свою состоятельность. Однако с лучшими приемами не все так просто...
Во-первых, не существует «Книги лучших приемов» — все они разбросаны по сотням книг и Web-узлов. Часто бывает так, что из всей содержащейся там информации требуется лишь одно предложение. Во-вторых, зачастую совершенно неясно, можно ли считать некоторый прием лучшим, — это зависит от вашего подхода к решению проблем, опыта и конкретной ситуации. Наконец, часто лучшие приемы представляют собой ловушку, попав в которую, вы прекращаете искать другое решение, которое может быть идеальным решением проблемы, несмотря на полное отрицание подхода, навязываемого «лучшим приемом».
Ну как, все еще интересно?
Мне задают много вопросов о том, как выполнить то или иное действие. Я постоянно слышу их во время дискуссий, в телеконференциях и получаю по элек-тронной почте. Интересно участвовать в подобных дискуссиях — обычно спрашивающему нужно просто решить какую-то проблему, и ему не так важно следовать «лучшим приемам». Но часто оказывается, что имеющиеся «лучшие приемы» первым же делом увиливают от сути вопроса!
Кроме того, заданный читателем вопрос часто свидетельствует о наличии еще более сложной проблемы. Дело в том, что читатель пытается решить не ту проблему, какую следует (чуть ниже я приведу ряд примеров), или делает это не так, — такой подход я называю «худшим приемом». Поразмыслив над этим, я понял, что многие пользователи могут извлечь пользу из обсуждения, почему же все НАСТОЛЬКО плохо. У худших приемов есть одна интересная особенность: по моим наблюдениям, они соответствуют самым легким способам решения проблемы. Попробуйте поставить перед молодым разработчиком или администратором БД какую-либо задачу — в 8 случаях из 10 он попытается решить ее путем лобовой атаки.
Прежде чем начать, прошу не понять меня превратно: я не смеюсь над теми, кто задает мне вопросы. Очень вежливое общение — одна из особенностей наших телеконференций. Их задача — помочь читателям разрешить возникшие у них проблемы с SQL Server, и другие тесно связанные с ними проблемы. Вопросы начинающих пользователей дают нам невероятную возможность научить не только спрашивающего, но и всех, кто будет читать данную ветвь телеконференции до и после обсуждения этого вопроса.
Сегодня мы остановимся на простом случае: использовании венгерской нотации имен столбцов. В сущности, это методика именования переменных, которая позволяет указать в имени переменной как сферу действия, так и сведения о типе данных.
Лез Смит (Les Smith)
создание файла с разделителями (символами табуляции) для приложения ASP,работающего в интрасети
Эти файлы представляют собой текстовые версии статических HTML-отчетов, которые пользователь может загрузить, когда ему нужны «файлы для импорта в Excel».
Необходим метод, позволяющий создавать на основе результатов SQL-запроса текстовые файлы с разделителями-табуляторами. Удивительно, но в SQL Server нет хранимой процедуры, способной решить эту задачу.
Один из способов — использование пакета DTS. Но я не вижу возможности передать пакету параметры, чтобы изменить запрос или целевой текстовый файл. (В SQL Server 2000 такая возможность появилась.)
Итак, для экспорта запроса в файл я решил создать простой объект COM. С помощью Visual Basic я написал класс, ссылающийся на ADO и сервер сценариев периода выполнения (Scripting Runtime). Один из вариантов реализации включает использование пакета DTS, VB позволяет создать объект DTS в виде объекта COM. Однако DTS на самом деле очень трудно программировать, а с помощью более простого API можно решить эту задачу ничуть не хуже.
Стив Джонс (Steve Jones)
Когда состоялся выпуск DTS, я думал, что вокруг него слишком много шумихи
на протяжении всех семи лет, отданных мной разработке SQL-приложений самых разных типов, расширенная хранимая процедура xp_cmdshell позволяла мне делать все то, чего я не мог сделать при помощи T-SQL. Все шло хорошо, пока в прошлом году я не начал работать в компании, использовавшей на своем web-узле так называемые «управляемые» сервисы. В сущности, мы платили одной компании арендную плату за использование серверов центра данных, которые она поддерживала в рабочем состоянии, проводила резервное копирование, обслуживание и другие необходимые работы. Так случилось, что центр данных был расположен в Далласе. Все бы хорошо, но сам я живу в Денвере. Это делало мое личное присутствие для работы в центре затруднительным. К счастью, мы уже работали с Windows 2000 и службы DTS оказались очень удобными в создании приложений для переноса данных.
Суть проблемы
Как я уже сказал, недавно мы переехали в новый центр данных, расположенный в Денвере, и обновили свой сервер до SQL Server 2000. Ура! Наконец-то в DTS была включена задача FTP-клиента. Я с нетерпением зарылся в DTS (вооружившись книгой Professional SQL Server 2000 DTS, опубликованной издательством Wrox) и приготовился к созданию автоматизированной задачи, которая должна еженощно отсылать на мой сервер резервные копии БД.
Нужно было переслать на удаленный сервер резервные копии локальной БД, созданные с помощью SQL Server. Текущие условия позволяли скопировать их на подсобный сервер локальной сети, но он не был включен в домен (из соображений безопасности). Это обстоятельство делало передачу файлов с помощью стандартных процедур копирования файлов Windows проблематичной. Нужно было решение на основе FTP, поскольку оно было бы стандартным и открытым. В настоящее время все наши серверы работают под управлением Windows, но, возможно, в дальнейшем будет создан ряд серверов под управлением Linux или Unix.
Все хорошо, но есть одна проблема: FTP-клиент может лишь получать файлы.
Вот досада! Как обидно: объект для получения файлов уже есть, а отослать файлы нельзя! (Может быть разработчики SQL Server мне помогут!)
Решение
Как известно, безвыходных ситуаций не бывает, поэтому я решил не отчаиваться сразу. При использовании управляемого решения резервное копирование БД производится ежедневно во время исполнения задачи обслуживания. Я создал пакетный файл, передающий по FTP все .BAK-файлы из каталога резервных копий с помощью встроенного FTP-клиента Windows 2000 и запланировал соответствующую задачу. Передав его в офис, я сделал отдельный пакетный файл, переименовывавший принятые копии. Это решение работало замечательно, поскольку в каталоге резервных копий ежедневно появлялось не больше одного нового файла. Однако в новом центре данных каждые 6 часов «штамповали» новую копию БД, сохраняя при этом 4 последних. В дополнение к этому, мне теперь было нужно пересылать файлы резервных копий на вспомогательный сервер, где их можно было чаще сохранять на магнитной ленте.
В выбранном нами решении были задействованы задачи ActiveX Scripting и Execute Process из DTS. Не обошлось также без более подробного знакомства с FTP-клиентом и автоматизацией на основе пакетных файлов.
Корпорация Microsoft
В статье описаны пользовательские хранимые процедуры, с помощью которых можно определять конфигурации сервера и БД, параметры которых отличаются от рекомендуемых для Microsoft SQL Server 2000, а также помогают устранять неполадки, связанные с блокированием
К таким процедурам относятся:
Эти хранимые процедуры можно использовать без изменений, но при необходимости администратор БД также может модифицировать их в соответствии со специфическими потребностями предприятия.
Предупреждение! Не используйте описанные в этой статье процедуры на рабочем сервере, не разобравшись в принципе их работы и выполняемых ими действиях. Все описанные здесь методики настоятельно рекомендуется прежде испытывать на тестовом компьютере.
Лез Смит (Les Smith)
Статья посвящена использованию метаданных курсора, которые позволяют получать сведения об операторах SQL и динамически генерировать на их основе другой код, например HTML, или другую хранимую процедуру
Здесь аргументом хранимой процедуры будет оператор SQL. С помощью информации, извлеченной из таблиц метаданных курсора (master.dbo.syscursorco lumns и master.dbo. syscursors), хранимая процедура будет динамически генерировать HTML-код таблицы.
Конечно, эту задачу можно решить, построив таблицу с помощью методов ASP. Однако к преимуществам создания предварительно сформированного набора записей с помощью хранимой процедуры следует отнести централизацию программы и возможность сколь угодно долгого хранения предварительно сформированного набора записей. В нашем примере для хранения HTML-таблицы используется локальная временная таблица (удаляется в конце процедуры). Если эти данные нужно хранить дольше, подумайте об использовании глобальных временных таблиц (которые можно хранить в памяти и удалить, когда они станут не нужными) или постоянных таблиц, в которых данные могут храниться еще дольше.