Windows Live ID Добро пожаловать на IT Community 
Регистрация

Стань частью ИТ-сообщества

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

Присоединяйся к нам!

Вадим Бабаев

Андрей Бутенко

Artem Korsun


Все участники

SQL (RSS)

Просмотров: 988
Ответов: 0

Обновите свои новостные каналы лентами из SQL Server BLOGROLL 2010

отправлено 2 февраля 2010 г. 15:28 участником agladchenko

Продолжаю традицию в начале года верстать очередной BlogROLL. За основу этого списка новостных лент берётся мой актуализированный OPML, т.е. счастливым обладателям IE7 и выше достаточно просто импортировать его каналы. Как это сделать уже было подробно и наглядно описано в моём блоге. Тех же, кто предпочитает список блогов, я пригашаю перейти по этой ссылке на страницу, где я сгруппировал блоги по нескольким тематическим направлениям: SQL Server BLOGROLL 2010

Вашему вниманию предлагается актуализированный список блогов (блоги, которые не пополнялись больше года, из него исключены). Кроме того, в списке появилось очень много совершенно новых авторов, которые публикуют исключительно интересные материалы и исследования, так либо иначе связанные с SQL Server. Прошлогодняя лента блогов такде доступна, напоминаю ссылку на её страницу: SQL Server BLOGROLL 2009


Читать далее
Категория: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Просмотров: 976
Ответов: 0

I Международная научно-практическая конференция "Объектные Cистемы - 2010"

отправлено 26 января 2010 г. 17:52 участником agladchenko

Россия, Ростов-на-Дону, 10-12 Мая 2010г.

Конференция посвящена принципам проектирования, реализации и сопровождения объектных систем и включает в себя обсуждение широкого круга проблем. В организации и работе конференции принимает участие широкий круг лиц, как известных учённых, так и крупных специалистов в области разработки корпоративных информационных систем, представителей ВУЗов и коммерческих организаций России, ближнего и дальнего зарубежья (Греция, Польша). Конференция является заочной. По окончанию работы конференции публикуется сборник научных трудов авторов с присвоением ему ISBN-кода, который будет разослан в крупнейшие научные библиотеки России. Электронная версия сборника будет размещена в ведущих информационных каталогах и разослана всем участникам конференции.
Каждому участнику высылается сертификат международного образца

Основные секции конференции

  1. Графические нотации, используемые при объектном проектировании ИС
  2. Принципы объектного проектирования информационных систем
  3. Инструменты объектного моделирования
  4. Теория объектно-ориентированного программирования
  5. Методы (шаблоны) объектно-реляционного отображения
  6. Реализация и использование объектных расширений в РСУБД
  7. Проектирование, разработка и реализация распределённых систем
  8. Типовые реализации корпоративных информационных системы
  9. Принципы организации и реализации объектных баз данных
  10. Проблемы реализации объектных СУБД
  11. Проблемы изучения (преподавания) объектных технологий в ВУЗе

Ключевые даты конференции

  • 01.01.2010 - 10.04.2010 - приём заявок на участие в конференции и докладов к публикации
  • 11.04.2010 - 05.05.2010 - рассылка уведомлений о принятии докладов на конференцию и приём квитанций об оплате оргвзноса
  • 10-12 мая 2010 г. - формирование сборника трудов
  • II - III квартал 2010 г. - рассылка печатной версии сборника в научные библиотеки РФ, регистрация электронной версии в специализированных каталогах и рассылка авторам докладов.

Контактная информация

По любым оргвопросам Вы можете обратиться к сопредседателю конференции Олейнику
Павлу Петровичу по телефону 89085078061, либо по адресу conf@objectsystems.ru.
Подробная информация о конференции размещена на сайте http://www.objectsystems.ru/


Читать далее
Категория: , , , , , , , , , , , , ,
Просмотров: 917
Ответов: 0

Оператор LIMIT в MS SQL Server

отправлено 19 января 2010 г. 12:57 участником DeColores

"Как известно" (из документации), оператора LIMIT в SQL Server на данный момент просто нет.

Но нельзя сказать, что нет его замены - есть ROW_NUMBER(). Кто-то скажет, что для этой функции требуется сортировка, которая сильно утяжеляет выполнение запроса. Конечно, пронумеровать в каком бы-то нибыло порядке только для того, чтобы вывести "вторые" или "третьи" десяток строк из миллионной таблицы - это слишком, особенно если не требуется 100% гарантии того, что при просмотре очередного окна туда не попадут строки из предыдущего.

Проблема решается примерно так:

select * 
from 
    (
    select row_number() over(order by (select 1)) as aaa, *
    from TABLE t
    ) q
where aaa between @top and @bottom

Читать далее...
Читать далее
Категория: , , ,
Просмотров: 1030
Ответов: 0

Высокая доступность в репликации SQL Server 2008 с зеркалированием и доставкой журналов

отправлено 18 декабря 2009 г. 17:56 участником agladchenko

Под общей редакцией А. Гладченко и В. Щербинина.

Москва. ЭКОМ Паблишерз, 2008Г. 288 страниц. ISBN: 978-5-9790-0086-2. Книга уже в продаже.

Эта книга - сборник статей, которые посвящены ключевым для понимания репликации SQL Server моментам. Кроме переводов наиболее интересных зарубежных авторов, являющимисяхся признанными во всём мире специалистами, в книге вы найдёте ряд статей участников сообщества SQL.RU, которые многие годы помогаю решать разнообразные проблемы на технических форумах этого замечательного интернет - ресурса. Если во время прочтения книги у вас возникнут сомнения или вопросы по поводу изложенных тут материалов, смело обращайтесь к авторам статей на форумах SQL.RU, они с удовольствием вам помогут.
В сборник включены переводы и статьи следующих участников сообщества SQL.RU: Дмитрий Артёмов, Александр Волок, Александр Гладченко, Ильдар Даутов, Григорий Кoрнилов, Алексей Ковалёв, Наталья Кривонос, Ян Либерман, Ирина Наумова и Владислав Щербинин. Причём, на момент написания книги, Александр Гладченко, Ян Либерман и Ирина Наумова являлись SQL Server MVP.
Книга в первую очередь ориентирована на администраторов баз данных, которые собираются углубить свои познания в репликации SQL Server. Назначение этой книги состоит в том, чтобы предоставить читателям набор апробированных в течение нескольких лет рецептов по использованию и настройке репликации в SQL Server.

ЗАКАЗАТЬ

Обсудить книгу можно тут: http://www.sql.ru/forum/actualthread.aspx?tid=643700

Пример статьи из сборника:

Высокая доступность в репликации SQL Server 2008 с зеркалированием и доставкой журналов

Автор Александр Юрьевич Гладченко

Статья написана по мотивам технического документа Майкрософт: "SQL Server Replication: Providing High Availability using Database Mirroring" и описания в электронной документации SQL Server 2008 Books Online (далее BOL): "Репликация и зеркальное отображение базы данных".
В этой статье мы рассмотрим новые возможности обеспечения высокой доступности тиражируемых данных, используя для этого Репликацию транзакций, Доставку журналов и зеркальные копии баз данных.
Основанная на Репликации транзакций распределённая система хранения данных может обеспечить высокую устойчивость к отказам серверов баз данных. Подобные решения позволяют достичь высокой степени доступности, за счёт поддержки избыточных копий данных. Кроме Репликации, избыточность на уровне баз данных способны обеспечить несколько механизмов SQL Server 2008. Это такие возможности, как резервное копирование с последующим восстановлением, Доставка журналов и Зеркальное отображение базы данных. Причём, Зеркальное отображение является единственным механизмом, который поддерживает точную копию защищаемой базы данных практически в реальном масштабе времени, и гарантирует отсутствие потерь данных.
В этой статье на примерах мы посмотрим, как можно использовать Зеркальное отображение реплицируемой базы данных для повышения её доступности. Мы рассмотрим как Репликация и Зеркальное отображение влияют друг на друга, а также, как Зеркальное отображение совместимо с Доставкой журналов и как Доставка журналов совместима с Репликацией. Кроме того, в этой статье мы коснёмся возможностей использования для первоначальной синхронизации баз данных механизмов Доставки журналов, и вкратце рассмотрим принципы работы инициализации подписчика, основанной на логических номерах виртуальных журналов (LSN), которая позволяет сократить время восстановления после отказа при наличии зеркальной копии базы данных Подписчика.

Совместимость Доставки журналов с Зеркальным отображением и Репликацией

В настоящей статье мы не ставим целью полностью раскрыть тему совмещения Доставки журналов с Зеркальным отображением баз данных и Репликацией. Эта тема достаточно подробно раскрыта в BOL. Здесь мы рассмотрим только те аспекты Доставки журналов, которые нам пригодятся для первоначальной синхронизации основной базы данных Зеркального отображения и баз данных Подписчиков в топологии репликации. Коротко будет сказано и о том, как можно использовать Доставку журналов в целях резервного копирования участвующих в Репликации баз данных.
Целью Доставки журналов SQL Server 2008 является обеспечение автоматической синхронизации баз данных, которая осуществляется путём резервного копирования журналов транзакций в базе данных Источника, и последующей доставке и восстановление копий журнала транзакций в базе данных Получателя. Сервер, который обслуживает базу данных Получателя, выступает в роли резервного сервера или сервера отчётов. Сервер отчётов предоставляет возможность обработки запросов пользователей на чтение данных. Одна база данных Источника может синхронизироваться с одной или с несколькими базами данных Получателей. Доставка журналов применима к тем базам данных, которые используют полную модель восстановления или модель восстановления с неполным протоколированием.
Давайте договоримся, что сервер, первоначально обслуживающий базу данных Источника, будем называть сервером источника (термин "основной сервер" был бы удобнее, но он используется в Зеркальном отображении, и мы его не станем использовать, чтобы не было путаницы), а сервер, первоначально обслуживающий базу данных Получателя, называть резервным сервером. После настройки, сервер источника обслуживает базу данных Источника, но может сменить роль и обслуживать базу данных Получателя. Изменение роли приводит к одновременному изменению настроек на всех участвующих в Доставке журналов серверах, поскольку сервер источника может быть только один.
В Доставке журналов предусмотрены средства мониторинга и оповещения обо всех штатных и нештатных состояниях участников процесса Доставки журналов. Начиная с SQL Server 2008, поддерживается сжатие резервных копий, и такие копии можно использовать для Доставки журналов. Копии журналов создаются и доставляются с помощью заданий автоматизации службы SQL Server Agent, всего таких заданий четыре: задание резервного копирования Источника, задание копирования файлов Получателю, задание восстановления копий на Получателе и задание рассылки предупреждений.
Формат хранения данных на диске для SQL Server x64 и x86 одинаков, т.е. в Доставке журналов могут участвовать сервера баз данных под управлением 32-х и 64-х разрядных операционных систем. Доставка журналов поддерживается следующими редакциями SQL Server 2005: Enterprise Edition, Standard Edition и Workgroup Edition. Серверы, задействованные в доставке журналов, должны иметь одинаковые параметры сортировки, а базы данных источника и получателей могут использовать только модель полного восстановления (Full) или модель восстановления с неполным протоколированием (Bulk Logged).
Доставка журналов может быть средством тиражирования данных, однако, в этой статье мы рассмотрим возможность использования Доставки журналов для первоначальной синхронизации баз данных в Зеркальном отображении и Репликации.
Из BOL мы знаем, что Доставку журналов допустимо совмещать с Зеркальным отображением. В таком случае база данных Источника должна являться основной базой данных Зеркального отображения. Причём, Зеркальное отображение может быть настроено в любом из трёх режимов его работы. Базы данных Получателей не должны находиться на том же экземпляре сервера, что и база источника или на экземпляре Зеркального отображения базы Источника. Поскольку Зеркальное отображение позволяет делать резервные копии только базы данных основного сервера, использование в качестве базы данных Источника зеркальной копии основной базы невозможно. Настраивать Доставку журналов и Зеркальное отображение на основном сервере можно в любом порядке.
Допустимо совмещать Доставку журналов с Репликацией, и это справедливо для издаваемой базы данных, баз данных Подписок, и для базы данных Распространителя. Следует учитывать, что процесс репликации будет прерван в случае перехода на резервный сервер, поскольку агенты репликации не умеют правильно реагировать на изменение ролей серверов в Доставке журналов, и это приведёт к тому, что транзакции перестанут тиражироваться подписчикам. После того, как роль базы данных Источника вернётся в первоначальное состояние, репликация возобновляется, и все те транзакции, которые были скопированы Доставкой журналов с резервного сервера на сервер источник, реплицируются подписчикам. В случае безвозвратной потери базы данных Источника, достаточно переименовать Получателя, чтобы возобновить процесс репликации.
Первоначальная инициализация базы данных Получателя в процессе настройки Доставки журналов осуществляется путём восстановления полной резервной копии базы данных источника с параметрами NORECOVERY или STANDBY. Для организации доставки журналов необходимо создать сетевой ресурс, в котором будут создаваться резервные копии журналов транзакций и который будет доступен всем участвующим в Доставке журналов серверам. В нашем примере в качестве такого ресурса будет использоваться каталог сервера источника C:\MSSQL\LogShip\.
Существует возможность синхронизировать процесс доставки журналов с тиражированием данных в репликации транзакций. Такая синхронизация устанавливается с помощью системной хранимой процедуры sp_replicationdboption, которая позволяет для публикуемой базы данных и базы данных Распространителя установить опцию "sync with backup". Когда эта опция установлена для базы данных Распространителя, это гарантирует, что транзакции в журнале публикуемой базы данных не будут усечены до тех пор, пока не будет создана их резервная копия в базе данных Распространителя. Усечение журнала транзакций публикуемой базы данных откладывается до завершения резервного копирования усекаемых транзакций в базе данных Распространителя. Установка этой опции позволяет управлять точкой усечения базы данных Публикации. Новое значение вступает в силу после очередного запуска Агента чтения журнала или по истечении заданного параметром агента -MessageInterval интервала времени, если Агент чтения журнала работает в непрерывном режиме. За счёт того, что в базе данных распространителя не будет транзакций, которых нет в резервной копии публикуемой базы данных, можно не боятся рассогласованности издаваемой базы данных и базы данных Распространителя в случае восстановления издаваемой базы данных из резервной копии. Однако, следует помнить, что такой способ синхронизации добавляет задержку в процесс тиражирования транзакций и не гарантирует отсутствия потерь данных, в случае повреждения журнала транзакций. Кроме того, для Доставки журналов опция важна только для издаваемой базы данных.
В рамках этой статьи мы не будем рассматривать совместную работу Доставки журналов и Репликации. Доставка журналов нами будет использоваться только для целей первоначальной синхронизации баз данных подписчиков и Зеркального отображения базы данных Издателя. Поэтому сценарии включения Доставки журналов будут использоваться в примерах с демонстрацией включения Зеркального отображения и Репликации.
Дополнительную информацию о Доставке журналов можно получить в следующих статьях BOL:

  • Развертывание доставки журналов
  • Репликация и доставка журналов
  • Зеркальное отображение баз данных и доставка журналов
  • Резервное копирование и восстановление из копий реплицируемых баз данных
  • Стратегии резервного копирования и восстановления из копии репликации моментальных снимков и репликации транзакцийСовместимость Зеркального отображения и Репликации

Не все базы данных в топологии Одноранговой репликации транзакций допускают Зеркальное отображение (зеркалирование). Например, это невозможно для базы данных Распространителя. В Репликации транзакций зеркалирование базы данных подписчика требует учёта некоторых ограничений, которых нет для издаваемой базы или в одноранговой топологии. Возможность использования в репликации зеркалирования зависит от того, насколько будут способны задействованные агенты репликации отрабатывать состояние отказа основной базы данных и автоматически переключаться на зеркальную копию. Так, например, ни один из соответствующих агентов репликации не может правильно отреагировать на отказ базы данных Распространителя и переключиться на работу с зеркальной копией этой базы данных. Для обеспечения высокой доступности Распространителя его следует вынести на выделенный компьютер и отдать его под управление отказоустойчивого кластера. Однако, те агенты репликации, которые соединяются с публикуемой базой данных, умеют переключаться на зеркальную копию, и в случае отказа способны подключиться автоматически, обеспечив непрерывность процесса репликации.
С подписчиками всё не так просто, как с издателем. К сожалению, ни один из работающих с базами на подписчике агентов репликации не предназначен для автоматического переключения в случае отказа. Самым естественным путём переключения потока данных репликации является удаление подписки и создание её заново.
Дополнительные сведения можно получить в следующей статье BOL: "Репликация и зеркальное отображение базы данных".

Влияние зеркалирования на работу Агента чтения журнала

Зеркалирование публикуемой базы данных влияет на поведение Агента чтения журнала, его состояние становится зависимым от состояния зеркалирования. Агент чтения журнала зеркалируемой базы данных будет копировать из журнала вначале записи тех транзакций, которые были до этого скопированы и завершены в журнале регистрации транзакций зеркальной базы данных (процесс, с помощью которого пишутся записи в журнал транзакций зеркальной базы данных, в документации называют hardening - закрепление). Т.е. реплицироваться будут только записи с таким LSN, который больше LSN последней закреплённой в журнале транзакций зеркала.
Это позволяет выставить из топологии основной сервер (зеркало доступно, но существуют такие записи в журнале транзакций, которые еще не были закреплены на зеркале) или изолировать его (когда зеркало недоступно). В обоих случаях, пока основной сервер работоспособен и его база данных доступна, любые изменения в его базе данных не будут реплицированы, пока соответствующие записи журнала транзакций не будут закреплены на зеркале.
Такое поведение добавляет задержки в поток репликации, и если произойдёт отказ зеркалирования, будет гарантировано, что записи в журнале Подписчика не обгонят фиксацию в основной базе данных.
Ели Агент чтения журнала вынужден ждать закрепления записей в журнале транзакций зеркальной базы данных, в хронологии работы Агента чтения журнала будут появляться уведомления следующего вида: "Replicated transactions are waiting for next Log backup or for mirroring partner to catch up".

Изменение поведения Агента чтения журнала при установке флага трассировки 1448

В редких случаях, эффект задержек из-за зеркалирования для логики работы использующих репликацию приложений может оказаться не приемлем. Для решения этой проблемы добавлен новый флаг трассировки 1448, который предписывает репликации продолжаться даже в тех случаях, когда основная база данных выставлена или изолирована. Обычно, Агента чтения журнала ждет, пока не будут закреплены записи в журнале регистрации транзакций зеркальной базы данных, после чего он копирует их в базу данных Распространителя. Когда сервер запущен с флагом трассировки 1448, это ожидание исключается, и Агента чтения журнала может сразу копировать изменения, независимо от состояния зеркалирования.
Этот флаг трассировки можно применять в SQL Server 2008, а для SQL Server 2005 он появился в составе Cumulative update package 2 для SQL Server 2005 Service Pack 2. Подробности о флаге трассировки №1448 можно узнать в статье базы знаний Майкрософт №937041.
Обратите внимание на потенциальную опасность исключения задержек тиражирования в репликации. Для приложений отсутствие задержек может иметь решающее значение, и это может послужить причиной установки флага трассировки №1448 при использовании зеркалирования с репликацией. Надо понимать, что существует вероятность того, что использование этого флага приведёт к проблемам в случае отказа Зеркального отображения. Эти проблемы будут рассмотрены ниже.

 

Влияние отказа зеркалирования на работу Агента чтения журнала

Когда происходит автоматическая или ручная отработка отказа Зеркального отображения, Агент чтения журнала должен автоматически соединиться с новым основным сервером и продолжить копировать транзакций (если параметр -PublisherFailoverPartner был установлен правильно, как это будет описано ниже). Есть два случая, когда этого может не произойти. Первый, это когда отказ не может быть отработан правильно, потому что зеркальный сервер по каким либо причинам не может стать основным сервером. Второй случай может произойти только тогда, когда включён флаг трассировки №1448, о котором только что упоминалось выше.
Когда Зеркальное отображение не работает в режиме высокой доступности или основной сервер был выставлен или изолирован, может оказаться, что на основном сервере есть завершённые транзакции, которых еще не были закреплены на зеркале. Если основная база данных станет недоступной, и произойдёт передача её роли зеркалу, может случиться потеря тех транзакций, которые были завершены на основном сервере, но еще не были закреплены на зеркале. Если к тому же включён флаг трассировки №1448, некоторые из завершённых транзакций основного сервера могут быть скопированы, но ещё не закреплены на зеркале. Это приведёт к тому, что состояние метаданных о тиражируемых транзакциях на Распространителе будет опережать реальное состояние транзакций на принявшем роль основной базы данных зеркале. Т.е. Агент чтения журнала уже передавал Распространителю некоторое количество транзакций. После обнаружения таких расхождений, Агент распространителя выдаст ошибку: "The process could not execute 'sp_repldone/sp_replcounters' on ' GLADCHENKO-TEST'". Кроме этого сообщения об ошибке, будут и детализирующие ситуацию сообщения, из которых можно узнать, какой номер виртуального журнала пытался считать Агент чтения журнала. Исправить положение можно запустив с помощью системной хранимой процедуры sp_replrestart принудительную синхронизацию метаданных Издателя и Распространителя. Однако, велика вероятность того, что из-за расхождений в метаданных часть не синхронизированных в результате отказа основного сервера транзакций уже может попасть в базы данных Подписчиков. Это приведёт к тому, что Агент распространителя тоже прекратит свою работу, выдав сообщение об ошибке синхронизации данных. Поскольку в результате сбоя синхронизации Распространитель просто повторит изменения, передаваемые не прошедшими синхронизацию транзакциями, для преодоления ошибки работы Агента распространителя достаточно сменить его профиль на стандартный профиль с именем: "Continue on data consistency errors".

Как влияет нарушение зеркалирования на работу Агента чтения журнала

Как уже отмечалось, в случае отказа Зеркального отображения Агент чтения журнала станет работать с журналом транзакций зеркала основной базы данных. Возможность переключения на сменивший свою роль новый основной сервер обеспечивается параметром запуска агента -PublisherFailoverPartner. Пока между обоими участниками Зеркального отображения действует партнёрство, т.е. они продолжают работать по схеме основная база - зеркало основной базы, в случае отказа основной базы данных Агент чтения журнала подключится к принявшей роль основной, зеркальной базе данных.
Если основной сервер будет недоступен очень долго, лучше всего удалить зеркалирование, что позволит избежать проблем с ростом журнала транзакций зеркальной базы данных. Если отказ приведёт к тому, что будет нарушено партнёрство основной и зеркальной баз данных, Агент чтения журнала будет продолжать работать с зеркалом, пока ситуация с партнёрством не восстановится или зеркальное отображение не будет удалено. Если потом агента перезапустить, он попробует соединяться с основной базой данных, которая больше не является издаваемой базой данных, что приведёт к сбою репликации. В хронологии работы Агента чтения журнала появятся сообщения такого типа: "User-specified agent parameter values: -Publisher GLADCHENKO-TEST'". Также будут более детальные сообщения об отказе подключения. Для того чтобы решить подобную проблему, и заставить Агент чтения журнала продолжить свою работу, создайте на Распространителе псевдоним действующего сервера издателя.

Настройка периода хранения Распространителя

По умолчанию на Распространителе значение периода хранения транзакций установлено в ноль. Это означает, что транзакции очищаются сразу же, как только они будут доставлены всем Подписчикам. При использовании Зеркального отображения, в момент, когда из-за отказа Агент распространителя переключается на работу с зеркальной копией базы данных, нужно чтобы в базе данных распространителя ещё оставались транзакции, которые уже доставлены всем Подписчикам. Такое случается, когда зеркалирование работает в высокопроизводительном режиме, т.е. передача транзакций зеркалу идёт асинхронно и состояние зеркала может сильно отставать от состояния основной базы данных. Тогда, при необходимости добавления нового Подписчика, которого нежелательно инициализировать, у Агента распространителя должна существовать возможность догрузить новому Подписчику те транзакции, которые на момент добавления подписчика ещё не успели закрепиться в зеркале. Другой такой случай может произойти при отказе сервера Издателя, когда данные в базе данных публикации больше не доступны, и это не позволяет корректно инициализировать новую базу данных подписчика. В таком случае, при отсутствии транзакций на Распространителе, может произойти потеря данных.
Чтобы избегать потери данных или длительного простоя в системе с зеркалированием базы данных подписчика, рекомендуется установить адекватный период задержки транзакций у распространителя.
В наших примерах мы будем использовать следующий вариант настройки параметра задержки распространения:

    USE distribution
    EXEC sp_changedistributiondb N'distribution', N'min_distretention', 3
    EXEC sp_helpdistributiondb;
    GO

Типы ручной синхронизации Подписчика

Репликация не поддерживает автоматический переход на зеркальное отображение подписанной на публикацию базы данных, т.е. хотя зеркалирование и возможно, Агент распространителя не сможет переключиться на зеркало после отказа основной базы данных Зеркального отображения. Работа Агента распространителя закончится ошибкой сразу, как только он поймёт, что не может подключиться к базе данных, являющейся основной в партнёрстве Зеркального отображения. Зеркалирование Подписчика можно настраивать как до, так и после подписки. Однако, если планируется инициализация Подписчика моментальным снимком Публикации, эффективнее будет настраивать Зеркальное отображение после инициализации базы данных Подписчика.
В случае отказа Зеркального отображения базы данных Подписчика, необходимо перенаправить Репликацию на зеркальный сервер, туда, где теперь располагается новая база данных Подписчика, на новом основном сервере. Хотя этот метод требует заново оформить подписку, полной её инициализации не потребуется, и это благодаря новому типу синхронизации SQL Server 2008.
Все методы ручной инициализации Подписчика основаны на том, что база данных приводится в согласованное с Издателем состояние, и это становится отправной точкой тиражирования последовавших за этим состоянием транзакций Издателя. После создания Подписки с ручной синхронизацией, Агент распространителя должен иметь информацию о том, какие транзакции нужно тиражировать, не потеряв при этом новые данные или изменения в имеющихся данных. В качестве такой отправной точки используется тот номер LSN, который применим к соответствующему методу инициализации. Например, в методе с указанием параметра "replication support only" определение LSN происходит автоматически. Когда же инициализация осуществляется восстановлением из резервной копии, LSN берётся из заголовка файла резервной копии. В случае инициализации по LSN, необходимый номер виртуального журнала задаётся пользователем. Этот номер нужно указывать аккуратно, т.к. относящиеся к нему транзакции должны присутствовать на этот момент в базе данных Распространителя. Вот почему так важна задержка транзакций у Распространителя, это очень помогает в случае отказа.

Примеры

Для демонстрации новых возможностей обеспечения доступности Репликации SQL Server 2008 нам потребуется сервер Распространитель, который в представленном ниже сценарии создания Распространителя называется GLADCHENKO-VHD:

    -- Сценарий создания Распространителя
    use master
    exec sp_adddistributor @distributor = N'GLADCHENKO-VHD'
    , @password = N'' -- безопасность репликации не тема этой статьи,
                      -- оставляем уязвимой
    GO
    exec sp_adddistributiondb
      @database = N'distribution'
    , @data_folder = N'C:\MSSQL\DATA'
    , @log_folder = N'C:\LOG\DATA'
    , @log_file_size = 2
    , @min_distretention = 0
    , @max_distretention = 72
    , @history_retention = 48
    , @security_mode = 1
    GO

    use [distribution]
    if (not exists (select * from sysobjects where name = 'UIProperties'
        and type = 'U '))
        create table UIProperties(id int)
    if (exists (select * from ::fn_listextendedproperty('SnapshotFolder'
        , 'user', 'dbo', 'table', 'UIProperties', null, null)))
        EXEC sp_updateextendedproperty
      N'SnapshotFolder'
        , N'C:\MSSQL\ReplData'
        , 'user'
        , dbo
        , 'table'
        , 'UIProperties'
    else
        EXEC sp_addextendedproperty
      N'SnapshotFolder'
        , N'C:\MSSQL\ReplData'
        , 'user'
        , dbo
        , 'table'
        , 'UIProperties'
    GO

    exec sp_adddistpublisher
      @publisher = N'GLADCHENKO-VHD'
    , @distribution_db = N'distribution'
    , @security_mode = 1
    , @working_directory = N'C:\MSSQL\ReplData'
    , @trusted = N'false'
    , @thirdparty_flag = 0
    , @publisher_type = N'MSSQLSERVER'
    GO

Зеркальное отображение издаваемой базы данных

Мы будем использовать сервер GLADCHENKO-TEST в качестве основного сервера в зеркале и сервера издателя в Репликации. Публиковаться будет база данных MIR, и она же будет иметь своё Зеркальное отображение. Публикация тоже будет называться MIR. Сервер, на котором будет размещаться зеркало, называется GLADCHENKO-VHD и этот же сервер является в нашей тестовой топологии репликации Распространителем. В качестве сервера Подписчика будет выступать экземпляр GLADCHENKO-A\SUB, на котором база данных подписки будет называться MIR. Хотя репликацию можно настроить с помощью SQL Server Management Studio, мы будем её настраивать с помощью системных процедур Transact-SQL.
Для простоты демонстрации, все учётные записи, от имени которых будут запускаться службы, и имена входа, в контексте безопасности которых будут выполняться работы на серверах, будут сведены к одной, доменной учётной записи пользователя AG@troika.ru. Этот пользователь является локальным администратором на всех серверах, и включён в серверную роль sysadmins всех указанных выше серверов баз данных.

Шаг 1. Создание Публикации

Публикуемая база данных MIR состоит из четырёх таблиц: PerformanceCounter, PerformanceSignature, PerformanceSignatureData и PerformanceSignatureHistory. На самом деле, эти таблицы тиражируются средствами репликации транзакций с сервера, на котором размещена база данных System Center Operations Manager 2007 SP1. Сделано это для того, чтобы эмулировать работу "живого" приложения, поскольку данные мониторинга инфраструктуры серверов поступают в эти таблицы постоянно и без длительных перерывов. Именно этот поток реплицируемой информации мы и будет реплицировать с сервера GLADCHENKO-TEST на сервер GLADCHENKO-A\SUB.
Для получения более подробной информации о настройке Распространителя, смотрите следующие темы в SQL Server 2008 Books Online:

Ниже представлен сценарий создания Публикации.

Вначале, нужно разрешить на Распространителе ещё одного Издателя. Для этого на сервере GLADCHENKO-VHD выполните следующий сценарий:

    exec sp_adddistpublisher
    @publisher = N'GLADCHENKO-TEST'
    , @distribution_db = N'distribution'
    , @security_mode = 1
    , @working_directory = N'C:\MSSQL\ReplData'
    , @trusted = N'false'
    , @thirdparty_flag = 0
    , @publisher_type = N'MSSQLSERVER'
    GO

После этого можно приступить к созданию Публикации, для чего на сервере GLADCHENKO-TEST нужно выполнить следующий сценарий:

    use master
    -- Указываем Распространителя
    exec sp_adddistributor @distributor = N'GLADCHENKO-VHD'
    , @password = N'*********' -- тут нужно указать заданный
                               -- на Распространителе пароль

    -- В ответ должны получить подтверждение:
    -- "You have updated the Publisher property 'active' successfully"
    GO

    use [MIR]
    exec sp_replicationdboption @dbname = N'MIR'
    , @optname = N'publish'
    , @value = N'true'
    GO

    -- Добавляет Публикацию
    exec sp_addpublication
      @publication = N'MIR'
    , @description = N'Публикация БД MIR в репликации
    транзакций, на сервере GLADCHENKO-TEST'

    , @sync_method = N'native'
    , @retention = 0
    , @allow_push = N'true'
    , @allow_pull = N'true'
    , @allow_anonymous = N'false'
    , @enabled_for_internet = N'false'
    , @snapshot_in_defaultfolder = N'true'
    , @compress_snapshot = N'false'
    , @ftp_port = 21
    , @ftp_login = N'anonymous'
    , @allow_subscription_copy = N'false'
    , @add_to_active_directory = N'false'
    , @repl_freq = N'continuous'
    , @status = N'active'
    , @independent_agent = N'true'
    , @immediate_sync = N'true'
    , @allow_sync_tran = N'false'
    , @autogen_sync_procs = N'false'
    , @allow_queued_tran = N'false'
    , @allow_dts = N'false'
    , @replicate_ddl = 1
    , @allow_initialize_from_backup = N'true'
    , @enabled_for_p2p = N'false'
    , @enabled_for_het_sub = N'false'
    , @p2p_conflictdetection = N'false'
    , @p2p_originator_id = 1
    -- В ответ должны получить сообщение:

    -- Job 'GLADCHENKO-TEST-MIR-1' started successfully.

    -- "Warning: The logreader agent job has been implicitly created
    -- and will run under the SQL Server Agent Service Account"

    GO

    -- Создаём инициализирующий моментальный снимок
    exec sp_addpublication_snapshot @publication = N'MIR'
    , @frequency_type = 1
    , @frequency_interval = 1
    , @frequency_relative_interval = 1
    , @frequency_recurrence_factor = 0
    , @frequency_subday = 8
    , @frequency_subday_interval = 1
    , @active_start_time_of_day = 0
    , @active_end_time_of_day = 235959
    , @active_start_date = 0
    , @active_end_date = 0
    , @job_login = null
    , @job_password = null
    , @publisher_security_mode = 1
    GO
    -- Добавляем наши таблицы в виде статей публикации
    exec sp_addarticle @publication = N'MIR'
    , @article = N'PerformanceCounter'
    , @source_owner = N'dbo'
    , @source_object = N'PerformanceCounter'
    , @type = N'logbased'
    , @description = null
    , @creation_script = null
    , @pre_creation_cmd = N'drop'
    , @schema_option = 0x000000000803509F
    , @identityrangemanagementoption = N'manual'
    , @destination_table = N'PerformanceCounter'
    , @destination_owner = N'dbo'
    , @vertical_partition = N'false'
    , @ins_cmd = N'CALL sp_MSins_dboPerformanceCounter'
    , @del_cmd = N'CALL sp_MSdel_dboPerformanceCounter'
    , @upd_cmd = N'SCALL sp_MSupd_dboPerformanceCounter'
    GO
    exec sp_addarticle @publication = N'MIR'
    , @article = N'PerformanceSignature'
    , @source_owner = N'dbo'
    , @source_object = N'PerformanceSignature'
    , @type = N'logbased'
    , @description = null
    , @creation_script = null
    , @pre_creation_cmd = N'drop'
    , @schema_option = 0x000000000803509F
    , @identityrangemanagementoption = N'manual'
    , @destination_table = N'PerformanceSignature'
    , @destination_owner = N'dbo'
    , @vertical_partition = N'false'
    , @ins_cmd = N'CALL sp_MSins_dboPerformanceSignature'
    , @del_cmd = N'CALL sp_MSdel_dboPerformanceSignature'
    , @upd_cmd = N'SCALL sp_MSupd_dboPerformanceSignature'
    GO
    exec sp_addarticle @publication = N'MIR'
    , @article = N'PerformanceSignatureData'
    , @source_owner = N'dbo'
    , @source_object = N'PerformanceSignatureData'
    , @type = N'logbased'
    , @description = null
    , @creation_script = null
    , @pre_creation_cmd = N'drop'
    , @schema_option = 0x000000000803509F
    , @identityrangemanagementoption = N'manual'
    , @destination_table = N'PerformanceSignatureData'
    , @destination_owner = N'dbo'
    , @vertical_partition = N'false'
    , @ins_cmd = N'CALL sp_MSins_dboPerformanceSignatureData'
    , @del_cmd = N'CALL sp_MSdel_dboPerformanceSignatureData'
    , @upd_cmd = N'SCALL sp_MSupd_dboPerformanceSignatureData'
    GO
    exec sp_addarticle @publication = N'MIR'
    , @article = N'PerformanceSignatureHistory'
    , @source_owner = N'dbo'
    , @source_object = N'PerformanceSignatureHistory'
    , @type = N'logbased'
    , @description = null
    , @creation_script = null
    , @pre_creation_cmd = N'drop'
    , @schema_option = 0x000000000803509F
    , @identityrangemanagementoption = N'manual'
    , @destination_table = N'PerformanceSignatureHistory'
    , @destination_owner = N'dbo'
    , @vertical_partition = N'false'
    , @ins_cmd = N'CALL sp_MSins_dboPerformanceSignatureHistory'
    , @del_cmd = N'CALL sp_MSdel_dboPerformanceSignatureHistory'
    , @upd_cmd = N'SCALL sp_MSupd_dboPerformanceSignatureHistory'
    GO
    -- настраиваем и запускаем Агента чтения журнала
    exec [MIR].sys.sp_addlogreader_agent
      @job_login = null
    , @job_password = null
    , @publisher_security_mode = 1
    GO
    exec [MIR].sys.sp_addqreader_agent
    @job_login = null
    , @job_password = null
    , @frompublisher = 1
    GO
    -- Формируем лист доступа к публикации (PAL)
    -- Сюда нужно даобавить все задействованные агентами логины
    exec sp_grant_publication_access
      @publication = N'MIR'
    , @login = N'sa'
    GO
    exec sp_grant_publication_access
      @publication = N'MIR'
    , @login = N'NT AUTHORITY\SYSTEM'
    GO

Шаг 2. Настройка Доставки журналов для инициализации Подписчика

На этом шаге мы должны подготовить базу данных на сервере Подписчика, для того, чтобы она могла быть инициализирована из резервной копии. Поскольку поток транзакций в базе данных нашего Издателя не прерывается 24 часа в сутки, 7 дней в неделю и 365 дней в году, нам будет удобно задействовать для этого механизм Доставки журналов.
Для включения Доставки журналов нужно инициализировать базу данных Получателя путем восстановления полной резервной копии базы данных Источника. В нашем случае, резервным сервером, а заодно и сервером Подписчика будет компьютер GLADCHENKO-A\SUB.
Делаем полную копию издаваемой базы данных, для чего, на сервере GLADCHENKO-TEST выполняем следующий сценарий:

    BACKUP DATABASE [MIR]
    TO DISK = N'C:\MSSQL\BACKUP\MIR.bak'
    WITH NOFORMAT, INIT
    , NAME = N'Полная копия БД MIR'
    , SKIP, NOREWIND, NOUNLOAD, STATS = 10
    GO

Дожидаемся получения подтверждения успешности этой операции, в окне результатов появится приблизительно такой текст:

    10 percent processed.
    20 percent processed.
    30 percent processed.
    40 percent processed.
    50 percent processed.
    60 percent processed.
    70 percent processed.
    80 percent processed.
    90 percent processed.
    Processed 18104 pages for database 'MIR', file 'MIR' on file 1.
    100 percent processed.
    Processed 3 pages for database 'MIR', file 'MIR_log' on file 1.
    BACKUP DATABASE successfully processed 18107 pages in 4.394 seconds (32.193 MB/sec).

После того, как копия успешно создана, нужно её скопировать на сервер Источника. В нашем случае, нужно взять файл с компьютера GLADCHENKO-TEST из папки C:\MSSQL\BACKUP\MIR.bak и скопировать его на компьютер GLADCHENKO-A, в папку: C:\MSSQL\BACKUP\MIR.bak.
После того, как файл резервной копии окажется на сервере Получателя, нужно восстановить базу данных Получателя, что мы и сделаем на экземпляре GLADCHENKO-A\SUB, используя следующий сценарий:

    RESTORE DATABASE [MIR]
    FROM DISK = N'D:\MSSQL\BACKUP\MIR.bak'
    WITH FILE = 1
    , MOVE N'MIR' TO N'C:\MSSQL\DATA\MIR.mdf'
    , MOVE N'MIR_log' TO N'D:\MSSQL\LOG\MIR_1.ldf'
    , NOUNLOAD, REPLACE, STATS = 10, NORECOVERY
    GO

После успешного восстановления базы данных, приступаем к настройке Доставки журналов между публикуемой базой данных на Издателе, и только что восстановленной базой на Подписчике. Подробное описание настройки Доставки журналов можно найти в статье электронной документации: "Как включить доставку журналов (Transact-SQL)". Создадим папку для обмена резервными копиями журналов транзакций: C:\MSSQL\LogShip. На эту папку у учётных записей служб должен быть полный доступ.
Далее, настраивает базу данных Источника вместе с заданием резервного копирования, а также записями локального и удаленного мониторов:

    DECLARE @LS_BackupJobId AS uniqueidentifier
    DECLARE @LS_PrimaryId AS uniqueidentifier

    EXEC master.dbo.sp_add_log_shipping_primary_database
     @database = N'MIR'
    ,@backup_directory = N'C:\MSSQL\LogShip'
    ,@backup_share = N'\\GLADCHENKO-TEST\lsbackup'
    ,@backup_job_name = N'LSBackup_MIR'
    ,@backup_retention_period = 1440
    ,@backup_compression = 0
    ,@monitor_server = N'GLADCHENKO-A'
    ,@monitor_server_security_mode = 1
    ,@backup_threshold = 60
    ,@threshold_alert_enabled = 1
    ,@history_retention_period = 1440
    ,@backup_job_id = @LS_BackupJobId OUTPUT
    ,@primary_id = @LS_PrimaryId OUTPUT
    ,@overwrite = 1
    GO

Значения идентификаторов получились соответственно следующие:

    @LS_BackupJobId = DDCD7E77-F045-4649-A9F1-CF8FE843C711
    @LS_PrimaryId = 3346F94D-3DB6-4A56-BE99-DF2E60E0A25F

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

c:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqllogship.exe" -Backup 3346F94D-3DB6-4A56-BE99-DF2E60E0A25F -server GLADCHENKO-TEST'

Создаём расписание для задания резервного копирования журналов транзакций базы данных MIR:

    DECLARE @schedule_id int
    EXEC msdb.dbo.sp_add_jobschedule
     @job_id=N'DDCD7E77-F045-4649-A9F1-CF8FE843C711'
    ,@name=N'1'
    ,@enabled=1
    ,@freq_type=4
    ,@freq_interval=1
    ,@freq_subday_type=4
    ,@freq_subday_interval=10
    ,@freq_relative_interval=0
    ,@freq_recurrence_factor=1
    ,@active_start_date=20081202
    ,@active_end_date=99991231
    ,@active_start_time=0
    ,@active_end_time=235959
    ,@schedule_id = @schedule_id OUTPUT
    SELECT @schedule_id
    GO

Это расписание предусматривает выполнение задания каждые 10 минут в течение суток.
Мы не планируем создавать полное решение Доставки журналов, наша задача только облегчить первоначальную инициализацию Подписчика. Однако, давайте полностью следовать упомянутой выше инструкции BOL по включению Доставки журналов.
Далее, нам нужно на сервере Источника задать базу данных Получателя:

    EXEC master.dbo.sp_add_log_shipping_primary_secondary
     @primary_database = N'MIR'
    ,@secondary_server = N'GLADCHENKO-A\SUB'
    ,@secondary_database = N'MIR'
    ,@overwrite = 1
    GO

После этого, на сервере Получателя (Подписчик, в нашем примере это компьютер GLADCHENKO-A\SUB) нужно запустить процедуру, которая создаст все необходимые задания по применению резервных копий на базе данных Получателя.

    DECLARE @LS_Secondary__CopyJobId AS uniqueidentifier
    DECLARE @LS_Secondary__RestoreJobId AS uniqueidentifier
    DECLARE @LS_Secondary__SecondaryId AS uniqueidentifier

    EXEC master.dbo.sp_add_log_shipping_secondary_primary
     @primary_server = N'GLADCHENKO-TEST'
    ,@primary_database = N'MIR'
    ,@backup_source_directory = N'\\GLADCHENKO-TEST\lsbackup'
    ,@backup_destination_directory = N'\\GLADCHENKO-A\D$\MSSQL\LogShip'
    ,@copy_job_name = N'LSCopy_GLADCHENKO-TEST_MIR'
    ,@restore_job_name = N'LSRestore_GLADCHENKO-TEST_MIR'
    ,@file_retention_period = 4320
    ,@monitor_server = N'GLADCHENKO-A'
    ,@monitor_server_security_mode = 1
    ,@overwrite = 1
    ,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT
    ,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT
    ,@secondary_id = @LS_Secondary__SecondaryId OUTPUT
    GO

Получаем следующий набор идентификаторов:

    @LS_Secondary__CopyJobId = 338E7DF6-F266-40CD-902E-86F424E12E6C
    @LS_Secondary__RestoreJobId = 6C0FE890-5FC5-4BA7-BD89-EC13214514E8
    @LS_Secondary__SecondaryId = DC7800CE-767C-4F2B-9A42-70DC5F807184

После этого, среди заданий экземпляра GLADCHENKO-A\SUB появятся два новых задания, для которых определены шаги, но ещё не настроены расписания их работы. Первое задание с именем: LSCopy_GLADCHENKO-TEST_MIR. У этого задания только один шаг и он выполняет следующий сценарий:

    C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqllogship.exe -Copy DC7800CE-767C-4F2B-9A42-70DC5F807184 -server GLADCHENKO-A\SUB

Эта инструкция копирует файлы резервных копий журналов транзакций с сервера Источника на сервер Получателя.
Добавить типовое расписание работы этого задания можно с помощью следующего сценария:

    EXEC msdb.dbo.sp_add_schedule
     @schedule_name =N'DefaultCopyJobSchedule'
    ,@enabled = 1
    ,@freq_type = 4
    ,@freq_interval = 1
    ,@freq_subday_type = 4
    ,@freq_subday_interval = 15
    ,@freq_recurrence_factor = 0
    ,@active_start_date = 20081203
    ,@active_end_date = 99991231
    ,@active_start_time = 0
    ,@active_end_time = 235900
    ,@schedule_uid = @LS_SecondaryCopyJobScheduleUID OUTPUT
    ,@schedule_id = @LS_SecondaryCopyJobScheduleID OUTPUT

    EXEC msdb.dbo.sp_attach_schedule
    @job_id = '338E7DF6-F266-40CD-902E-86F424E12E6C'
    ,@schedule_id = @LS_SecondaryCopyJobScheduleID
    GO

Второе задание называется LSRestore_GLADCHENKO-TEST_MIR и предназначено для восстановления скопированных с Источника резервных копий на базе данных Получателя. Единственный шаг этого задания выполняет следующую инструкцию:

    С:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqllogship.exe -Restore DC7800CE-767C-4F2B-9A42-70DC5F807184 -server GLADCHENKO-A\SUB

Для добавления этому заданию расписания запуска необходимо на сервере GLADCHENKO-A\SUB выполнить следующий сценарий:

    EXEC msdb.dbo.sp_add_schedule
     @schedule_name =N'DefaultRestoreJobSchedule'
    ,@enabled = 1
    ,@freq_type = 4
    ,@freq_interval = 1
    ,@freq_subday_type = 4
    ,@freq_subday_interval = 15
    ,@freq_recurrence_factor = 0
    ,@active_start_date = 20081203
    ,@active_end_date = 99991231
    ,@active_start_time = 0
    ,@active_end_time = 235900
    ,@schedule_uid = @LS_SecondaryRestoreJobScheduleUID OUTPUT
    ,@schedule_id = @LS_SecondaryRestoreJobScheduleID OUTPUT

    EXEC msdb.dbo.sp_attach_schedule
     @job_id = '6C0FE890-5FC5-4BA7-BD89-EC13214514E8'
    ,@schedule_id = @LS_SecondaryRestoreJobScheduleID
    GO

И теперь осталось только добавить в Доставку журналов базу данных Получателя, что можно сделать, выполнив следующий сценарий на сервере GLADCHENKO-A\SUB:

    EXEC master.dbo.sp_add_log_shipping_secondary_database
     @secondary_database = N'MIR'
    ,@primary_server = N'GLADCHENKO-TEST'
    ,@primary_database = N'MIR'
    ,@restore_delay = 0
    ,@restore_mode = 0
    ,@disconnect_users = 0
    ,@restore_threshold = 45
    ,@threshold_alert_enabled = 1
    ,@history_retention_period = 1440
    ,@overwrite = 1
    GO

Следующим действием в настройке Доставки журналов будет подготовка сервера мониторинга, в качестве которого будет выступать экземпляр GLADCHENKO-A. На этом экземпляре нужно выполнить следующий сценарий:

    EXEC msdb.dbo.sp_processlogshippingmonitorprimary
     @mode = 1
    ,@primary_id = N'3346F94D-3DB6-4A56-BE99-DF2E60E0A25F'
    ,@primary_server = N' GLADCHENKO-TEST'
    ,@monitor_server = N'GLADCHENKO-A'
    ,@monitor_server_security_mode = 1
    ,@primary_database = N'MIR'
    ,@backup_threshold = 60
    ,@threshold_alert = 14420
    ,@threshold_alert_enabled = 1
    ,@history_retention_period = 1440
    GO

После этого, нужно включить те задания обслуживания Доставки журналов, которые были отмечены как выключенные. Это должно привести к тому, что Доставка журналов начнёт свою работу и будет поддерживать актуальность базы данных MIR на сервере GLADCHENKO-A\SUB в автоматическом режиме.
Теперь, когда придёт время создавать Подписку, достаточно будет ненадолго отключить клиентов от базы данных Издателя, дождаться или запустить вручную поочерёдно все задания Доставки журналов на Источнике и потом на Получателе, отключить все эти задания, и подготовить базу данных Получателя к настройке Подписки, выполнив этот сценарий:

    RESTORE DATABASE MIR WITH RECOVERY
    GO

Шаг 3. Настройка Подписки

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

    use [MIR]
    exec sp_addsubscription @publication = N'MIR'
    , @subscriber = N'GLADCHENKO-A\SUB'
    , @destination_db = N'MIR'
    , @sync_type = N'initialize with backup'
    , @backupdevicetype = N'disk'
    , @backupdevicename = 'LogShip\MIR_20081203195807.trn'
    , @fileidhint = 1
    , @subscription_type = N'pull'
    , @update_mode = N'read only'
    GO

Все последующие действия по оформлению Подписки нужно выполнять на сервере GLADCHENKO-A\SUB. Следующий сценарий создаёт Подписку по запросу:

    use [MIR]
    exec sp_addpullsubscription @publisher = N'GLADCHENKO-TEST'
    , @publication = N'MIR'
    , @publisher_db = N'MIR'
    , @independent_agent = N'True'
    , @subscription_type = N'pull'
    , @description = N''
    , @update_mode = N'read only'
    , @immediate_sync = 1

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

    exec sp_addpullsubscription_agent @publisher = N'GLADCHENKO-TEST'
    , @publisher_db = N'MIR'
    , @publication = N'MIR'
    , @distributor = N'GLADCHENKO-VHD'
    , @distributor_security_mode = 1
    , @distributor_login = N''
    , @distributor_password = null
    , @enabled_for_syncmgr = N'False'
    , @frequency_type = 64
    , @frequency_interval = 0
    , @frequency_relative_interval = 0
    , @frequency_recurrence_factor = 0
    , @frequency_subday = 0
    , @frequency_subday_interval = 0
    , @active_start_time_of_day = 0
    , @active_end_time_of_day = 235959
    , @active_start_date = 20081203
    , @active_end_date = 99991231
    , @alt_snapshot_folder = N''
    , @working_directory = N''
    , @use_ftp = N'False'
    , @job_login = null
    , @job_password = null
    , @publication_type = 0
    GO

Когда все необходимые действия по оформлению подписки завершены, на сервер GLADCHENKO-A\SUB можно полностью удалить Доставку журналов и позаботиться об удалении созданных там заданий Доставки журналов.

Шаг 4. Зеркалирование публикуемой базы данных

В репликации транзакций существует очень опасная точка отказа, это Издатель, об обеспечении высокой доступности которого раньше было трудно заботиться. Теперь, для повышения доступности Издателя, можно создать Зеркальное отображение его базы данных и обеспечить автоматическое переключение на зеркальную копию в случае отказа. Для примера, мы попробуем настроить Зеркальное отображение базы данных Публикации на сервере Издателя и имитируем отказ с переключением Агента чтения журнала на зеркальную копию публикуемой базы данных.
В электронной документации BOL есть несколько статей, которые подробно рассматривают вопросы, связанные с настройкой Зеркального отображения баз данных. Вот список названий некоторых из них:

В последней из перечисленных выше статей говориться, что предварительно на зеркальном сервере должна быть восстановлена резервная копия основной базы данных, и все последующие резервные копии журнала транзакций, восстановленные с использованием предложения WITH NORECOVERY. Как уже отмечалось выше, лучше всего подготовку синхронной копии зеркалируемой базы данных позволяет сделать Доставка журналов. Поскольку в настоящей статье мы уже уделили много внимания настройке Доставки журналов, повторение этой процедуры для инициализации копии основной базы данных мы опустим, будем считать, что все эти процедуры уже выполнены. Копия базы данных на момент начала настройки Зеркального отображения должна находиться в актуальном по отношению к основной базе данных состоянии.
В нашем примере, основной экземпляр и зеркало настраиваются так, чтобы использовать одного и того же Распространителя. В конфигурации Агента чтения журнала мы изменим настройки, чтобы получить нужное нам поведение агента в случае отказа сервера Издателя. Для этого на сервере Распространителя GLADCHENKO-VHD нужно установить значение для параметра запуска Агент чтения журнала -PublisherFailoverPartner, например так:

    exec sp_add_agent_parameter
      @profile_id = 1 -- ID Агента моментальных снимков
    , @parameter_name = N'-PublisherFailoverPartner'
    , @parameter_value = N'GLADCHENKO-VHD' -- сервер зеркала
    GO

    exec sp_add_agent_parameter
      @profile_id = 2 -- ID Агента чтения журнала
    , @parameter_name = N'-PublisherFailoverPartner'
    , @parameter_value = N'GLADCHENKO-VHD' -- сервер зеркала
    GO

Для принятия изменений профиля, нужно перезапустить задание Агента чтения журнала.
Зеркалирование публикуемой базы данных начнём с создания конечных точек зеркалирования. В первую очередь создадим конечную точку на Издателе, это у нас компьютер GLADCHENKO-TEST:

    CREATE ENDPOINT [MirroringEndpoint]
        AUTHORIZATION [AG@troika.ru]
        STATE=STARTED
        AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
        FOR DATA_MIRRORING
    ( ROLE = PARTNER
        , AUTHENTICATION = WINDOWS KERBEROS
        , ENCRYPTION = REQUIRED ALGORITHM RC4
    )
    GO

На сервере Зеркального отображения GLADCHENKO-VHD (это у нас Распространитель) тоже нужна конечная точка:

    CREATE ENDPOINT [MirroringEndpoint]
        AUTHORIZATION [AG@troika.ru]
        STATE=STARTED
        AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
        FOR DATA_MIRRORING
    ( ROLE = ALL
        , AUTHENTICATION = WINDOWS KERBEROS
        , ENCRYPTION = REQUIRED ALGORITHM RC4
    )
    GO

Проверить, что конечная точка была успешно создана и запущена, можно с помощью следующей инструкции:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints

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

    GRANT CONNECT ON ENDPOINT:: MirroringEndpoint TO AG@troika.ru GO

После раздачи прав, нужно объявить участников Зеркального отображения. На сервере Зеркальной копии GLADCHENKO-VHD выполним следующую команду:

    ALTER DATABASE [MIR] SET PARTNER = 'TCP://GLADCHENKO-TEST.troika.ru:5022'

После этого, с основного сервера GLADCHENKO-TEST запустим симметричную команду:

    ALTER DATABASE [MIR] SET PARTNER = 'TCP://GLADCHENKO-VHD.troika.ru:5022'

После этого должна произойти синхронизация основной и зеркальной баз данных. Зеркальное отображение должно быть запущено. Если этого не произошло, попробуйте внимательно изучить сообщение об ошибке. Чаще всего, причина в несогласованности баз, т.е. недостаёт последних изменений, которые могли быть не перенесены Доставкой журналов, или нечто подобное. Если причина не в этом, попробуйте отменить роль Зеркала и повторить настройку сначала. Сценарий отмены роли Зеркала представлен ниже:

    ALTER DATABASE [MIR] SET PARTNER OFF

Современные серверные операционные системы оснащаются встроенными Брандмауэрами. Такие сетевые экраны тоже способны помешать подключению к порту конечной точки. Проверить возможность подключения с основного сервера к серверу зеркальной копии можно с помощью консольной команды операционной системы:

    telnet GLADCHENKO-VHD 5022

Шаг 5. Переключение Публикации на зеркальную копию

Ну а теперь мы перейдём к самому интересному, ради чего были все эти подготовительные действия. Итак, мы имеем репликацию транзакций между двумя серверами, и Распространителя на третьем сервере. Кроме того, у нас настроено Зеркальное отображение базы данных Издателя на сервер Распространителя. Перед нами стоит задача - возобновить репликацию, которая была прервана в результате отказа Издателя. Доступность Издателя определяется Зеркальным отображением базы данных, на основе объектов которой создана наша Публикация. Отказ этой базы данных расценивается нами, как отказ Зеркального отображения и поводом для ручной или автоматической смены роли, когда зеркальная копия становится основной базой данных.
Далее, имитируем отказ основного сервера, который у нас является Издателем:

    ALTER DATABASE MIR SET PARTNER FAILOVER

В ответ получаем сообщение: "Nonqualified transactions are being rolled back. Estimated rollback completion: 100%".
После этого основная база данных Зеркального отображения меняется ролями со своим зеркалом. Причём, на Распространителе появляется публикация и видно, что у неё уже существует Подписка (которую мы создавали на сервере GLADCHENKO-TEST). Изменения, которые пользователи будут делать в базе данных MIR после её переезда на сервер GLADCHENKO-VHD, будут вначале закрепляться в новом зеркале, в базе данных на сервере GLADCHENKO-TEST. Потом они будут попадать в базу данных Распространителя, считанные Агентом чтения журнала, который умеет обращаться ко второму партнёру Зеркального отображения в случае отказа основного сервера или основной базы данных.
Если на сервере GLADCHENKO-TEST запустим следующую команду:

    SELECT PUBLISHINGSERVERNAME()

Эта команда возвратит имя исходного издателя для опубликованной базы данных, участвующей в Зеркальном отображении. Эта функция показывает первоначального издателя опубликованной базы данных, и поэтому у нас она вернёт, и всегда будет возвращать: "GLADCHENKO-TEST".
Если после этого выполнить на сервере GLADCHENKO-VHD ту же саму команду: "ALTER DATABASE MIR SET PARTNER FAILOVER", то всё вернётся в изначальное состояние. Публикация снова будет располагаться на сервере GLADCHENKO-TEST.
В отличие от агентов репликации, Монитор репликации не очень приспособлен для отслеживания работы с перемещённой на зеркальный сервер базой данных. Хотя его интерфейс будет показывать перемещение Публикации, информация о сеансах репликации может вводить администратора репликации в заблуждение. Трассировочные маркеры тоже не всегда помогают контролировать процесс репликации. В таком режиме работы репликации лучше всего контролировать сами данные, сверяя последние их изменения на издателе и подписчиках.
Существует опасность, что отказ основной базы данных приведёт к возникновению проблем репликации транзакций. Это особенно актуально, когда не соблюдается порядок первоначальной фиксации транзакции в зеркале базе данных. Если случиться так, что несколько некорректных транзакций будут препятствовать продолжению репликации данных, можно принудительно проигнорировать эти транзакции, что позволяет сделать системная процедура sp_setsubscriptionxactseqno.

Выводы

Зеркальное отображение можно использовать для повышения доступности Издателя в топологиях Репликации транзакций и Репликации слияния. Если важно, чтобы клиенты продолжали получать возможность изменения данных в издаваемой базе данных и автоматически переключались на её зеркальную копию в случае отказа, применение зеркалирования является оправданным.
В упомянутом в самом начале настоящей статьи техническом документе Майкрософт: " SQL Server Replication: Providing High Availability using Database Mirroring" предлагается вариант решения для зеркалирования баз данных Подписчиков. Там же вы найдёте аргументы для выбора такого решения.
Для повышения доступности базы данных Распространителя существует пока только одно решение - отказоустойчивая кластеризация.


Читать далее
Категория: , , , , , , , , , , , ,
Просмотров: 1212
Ответов: 0

CU 6 для SQL Server 2005 SP3 и CU 16 для SQL Server 2005 SP2

отправлено 21 октября 2009 г. 12:27 участником agladchenko

Стали доступны для заказа новые кумулятивные обновления для SQL Server 2005 с сервисными пакетами 2 и 3. Ниже представлена дополнительная информация по каждому пакету и выдержки из письма со ссылками и паролями архивов пакетов обновлений:

ВАЖНАЯ ИНФОРМАЦИЯ

Для вашего удобства мы поместили запрошенное исправление на веб-узел HTTP. Вы можете загрузить это исправление без ненужного заполнения вашего почтового ящика.

ВНИМАНИЕ! Для данного исправления не было проведено полное тестирование. Поэтому оно предназначено только для систем или компьютеров, в которых произошла конкретная ошибка, описанная в одной или более статей базы знаний Microsoft. Номера статей перечислены в поле "Номера статей из базы знаний" в таблице в конце данного сообщения. Если данное исправление стало причиной каких-либо проблем с совместимостью или ошибок при установке, мы рекомендуем подождать выхода следующего выпуска пакета обновления. Новый пакет обновления будет содержать полностью протестированную версию данного исправления. Мы понимаем, что очень сложно определить, связаны ли какие-либо проблемы с совместимостью или ошибки при установке с данным исправлением. Если вы хотите получить подтверждение, что данное исправление предназначено для устранения именно возникшей у вас проблемы, либо вы считаете, что из-за данного исправления у вас возникли проблемы с совместимостью или ошибки при установке, свяжитесь со специалистами службы поддержки, и они вам помогут. Для получения контактных сведений службы поддержки скопируйте приведенную ниже ссылку и вставьте ее в свой веб-обозреватель:

  http://support.microsoft.com/contactus/

Для получения сведений о дополнительных вариантах поддержки скопируйте приведенную ниже ссылку и вставьте ее в свой веб-обозреватель:

 http://support.microsoft.com/

Перед установкой данного исправления
------------------------------

Если вы решили установить данное исправление, обратите внимание на следующую информацию:

Не разворачивайте исправление в рабочей среде, предварительно не проверив его работу.

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

Дополнительные сведения об исправлении
-----------------------------

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

ПРИМЕЧАНИЕ. Пароли действительны в течение семи дней. Чтобы вы смогли извлечь файлы, загрузите пакет в течение семи следующих дней. Если вы получите данное сообщение менее чем за семь дней до окончания цикла существования пароля, вы получите два пароля. В этом случае, если вы загрузите пакет с исправлением до даты, указанной в поле "Дата изменения пароля" в таблице в конце данного сообщения, воспользуйтесь первым паролем. Вторым паролем можно воспользоваться, если вы загрузите пакет с исправлением после даты, указанной в поле "Дата изменения пароля".

ПРИМЕЧАНИЕ. Для вашего удобства адрес расположения исправления указан в виде гиперссылки. Чтобы подключиться к исправлению, можно щелкнуть гиперссылку в поле "Расположение" в таблице в конце данного сообщения, после чего веб-обозреватель автоматически откроет расположение исправления. Однако в некоторых программах электронной почты использование гиперссылок запрещено. В этом случае просто скопируйте гиперссылку, указанную в поле "Расположение", и вставьте ее в поле адреса веб-обозревателя. Необходимо скопировать весь текст (без пробелов) между скобками в адресе http://.

Cumulative update package 6 for SQL Server 2005 Service Pack 3

Результирующий номер сборки: 09.00.4266.00

Платформа Имя файла Размер файла (в байтах) Дата изменения
x86 SQL_Server_2005_SP3_Cumulative_Update_6_SQLWriter 764187 10/15/2009 8:38:29 PM
x86 SQL_Server_2005_SP3_Cumulative_Update_6_RS 37493567 10/15/2009 8:34:38 PM
x86 SQL_Server_2005_SP3_Cumulative_Update_6_SNAC 3198263 10/15/2009 8:36:34 PM
x86 SQL_Server_2005_SP3_Cumulative_Update_6_XMO 8095419 10/15/2009 8:40:18 PM
x86 SQL_Server_2005_SP3_Cumulative_Update_6 129000594 10/15/2009 8:33:16 PM
x64 SQL_Server_2005_SP3_Cumulative_Update_6_XMO 13168602 10/15/2009 8:39:40 PM
x64 SQL_Server_2005_SP3_Cumulative_Update_6_SQLWriter 2495301 10/15/2009 8:37:58 PM
x64 SQL_Server_2005_SP3_Cumulative_Update_6_RS 37584635 10/15/2009 8:33:57 PM
x64 SQL_Server_2005_SP3_Cumulative_Update_6 175668827 10/15/2009 8:32:51 PM
x64 SQL_Server_2005_SP3_Cumulative_Update_6_SNAC 6045758 10/15/2009 8:35:57 PM
ia64 SQL_Server_2005_SP3_Cumulative_Update_6 221029807 10/15/2009 8:32:17 PM
ia64 SQL_Server_2005_SP3_Cumulative_Update_6_XMO 15940270 10/15/2009 8:39:16 PM
ia64 SQL_Server_2005_SP3_Cumulative_Update_6_SNAC 7732166 10/15/2009 8:35:31 PM
ia64 SQL_Server_2005_SP3_Cumulative_Update_6_SQLWriter 3754738 10/15/2009 8:37:18 PM

Пакет:
-----------------------------------------------------------
-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global) Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397247_intl_i386_zip.exe)
Пароль: %l!XvPF

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397241_intl_i386_zip.exe)
Пароль: -*+eO$2S

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397244_intl_i386_zip.exe)
Пароль: qhx%hwNxt

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397250_intl_i386_zip.exe)
Пароль: {Il[a-fG

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6/09.00.4266.00/free/397239_intl_i386_zip.exe)
Пароль: u{1EP7I$

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397249_intl_x64_zip.exe)
Пароль: %j{R4WS

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397246_intl_x64_zip.exe)
Пароль: -)vmL#bN

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397240_intl_x64_zip.exe)
Пароль: 1pTWggGy2p

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6/09.00.4266.00/free/397238_intl_x64_zip.exe)
Пароль: 4)ONqH{

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397243_intl_x64_zip.exe)
Пароль: rkRoOc_GQ2

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: ia64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6/09.00.4266.00/free/397237_intl_ia64_zip.exe)
Пароль: eIo@yy%E{x

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: ia64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397248_intl_ia64_zip.exe)
Пароль: *ozI7Z_

-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: ia64 Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397242_intl_ia64_zip.exe)
Пароль: ca#c3jW{
-----------------------------------------------------------
Номера статей из базы данных: 969386, 970307, 972926, 972937, 973643, 973851, 974006, 974067, 974129, 974130, 974205, 974290, 974296, 974319, 974398, 974648, 974660, 974749, 974777, 974785, 974985, 975089, 975090, 975134, 975159, 975230, 975417, 975492, 975536, 975681, 975748, 975783, 975860, 976030, 976041
Язык: All (Global)
Платформа: ia64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp3/SQL_Server_2005_SP3_Cumulative_Update_6_/09.00.4266.00/free/397245_intl_ia64_zip.exe)
Пароль: 0fp^j)4A

ПРИМЕЧАНИЕ. Для перехода к расположению исправления необходимо указать весь текст между "(" и ")".

Cumulative update package 16 for SQL Server 2005 Service Pack 2

Результирующая версия сборки: 09.00.3355.00

Платформа Имя файла Размер файла (в байтах) Дата изменения
x86 SQL_Server_2005_SP2_Cumulative_Update_16_XMO 8103556 10/15/2009 5:58:41 PM
x86 SQL_Server_2005_SP2_Cumulative_Update_16_RS 37495657 10/15/2009 5:39:17 PM
x86 SQL_Server_2005_SP2_Cumulative_Update_16_SQLWriter 764055 10/15/2009 5:55:59 PM
x86 SQL_Server_2005_SP2_Cumulative_Update_16_SNAC 3195770 10/15/2009 5:41:25 PM
x86 SQL_Server_2005_SP2_Cumulative_Update_16 159412578 10/15/2009 5:34:54 PM
x64 SQL_Server_2005_SP2_Cumulative_Update_16_SNAC 5978604 10/15/2009 5:40:45 PM
x64 SQL_Server_2005_SP2_Cumulative_Update_16_SQLWriter 2497259 10/15/2009 5:55:09 PM
x64 SQL_Server_2005_SP2_Cumulative_Update_16_XMO 13181753 10/15/2009 5:58:11 PM
x64 SQL_Server_2005_SP2_Cumulative_Update_16_RS 37591940 10/15/2009 5:37:45 PM
x64 SQL_Server_2005_SP2_Cumulative_Update_16 210553590 10/20/2009 6:52:32 PM
ia64 SQL_Server_2005_SP2_Cumulative_Update_16_SQLWriter 3756327 10/15/2009 5:53:48 PM
ia64 SQL_Server_2005_SP2_Cumulative_Update_16_XMO 15962261 10/15/2009 5:57:36 PM
ia64 SQL_Server_2005_SP2_Cumulative_Update_16 252578794 10/15/2009 5:35:49 PM
ia64 SQL_Server_2005_SP2_Cumulative_Update_16_SNAC 7725853 10/15/2009 5:40:11 PM

Пакет:
-----------------------------------------------------------
-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397232_intl_i386_zip.exe) Пароль: 8V#lwQC

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397223_intl_i386_zip.exe) Пароль: IOw2cqqR

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397229_intl_i386_zip.exe)
Пароль: Dpa_%#b

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397226_intl_i386_zip.exe)
Пароль: fy][WZ0@K

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: i386
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397219_intl_i386_zip.exe)
Пароль: Kf7W2Yxa

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397225_intl_x64_zip.exe)
Пароль: zx[B2r[2

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397228_intl_x64_zip.exe)
Пароль: 1x@QN]H6x

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397231_intl_x64_zip.exe)
Пароль: NVI5jtJJ

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397222_intl_x64_zip.exe)
Пароль: MOM]9Da-

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: x64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397220_intl_x64_zip.exe)
Пароль: GmSB{dt

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: ia64 Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397227_intl_ia64_zip.exe)
Пароль: kHtch@b$

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: ia64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397230_intl_ia64_zip.exe)
Пароль: cuhQAVT-

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: ia64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397221_intl_ia64_zip.exe)
Пароль: UgNZwhJm

-----------------------------------------------------------
Номера статей из базы данных: 974067, 974398, 974647, 975536, 975860
Язык: All (Global)
Платформа: ia64
Расположение: (http://hotfixv4.microsoft.com/SQL%20Server%202005/sp2/SQL_Server_2005_SP2_Cumulative_Update_16/09.00.3355.00/free/397224_intl_ia64_zip.exe)
Пароль: Qr6AnbC

ПРИМЕЧАНИЕ. Для перехода к расположению исправления необходимо указать весь текст между "(" и ")".

Обновления применимы к следующим версиям:

  • Microsoft SQL Server 2005 Standard Edition for Itanium-based Systems
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Express Edition with Advanced Services
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium-based Systems
  • Microsoft SQL Server 2005 Analysis Services
  • Microsoft SQL Server 2005 Reporting Services


Читать далее
Категория: , , , , , , , , , , ,
Просмотров: 1594
Ответов: 0

Microsoft SQL Server 2008. Руководство администратора для профессионалов

отправлено 13 октября 2009 г. 21:54 участником Knyazev_Alexey

Брайан Найт, Кетан Пэтел, Вейн Снайдер, Росс Лофорт, Стивен Уорт Microsoft SQL Server 2008. Руководство администратора для профессионалов Professional Microsoft SQL Server 2008 Administration Администраторам баз данных, так же как и разработчикам, потребуется освоить новые методы эффективного управления постоянно растущей и усложняющейся среды SQL Server.

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

Эта книга поможет вам:

  • применять самые современные концепции инсталляции SQL Server 2008;
  • пользоваться подсказками для устранения неполадок и обеспечения безопасности механизма БД;
  • ознакомиться с методами автоматизации SQL Server 2008;
  • узнать о способах индексирования базы данных;
  • изучить методы мониторинга SQL Server 2008;
  • пользоваться методами настройки производительности SQL Server 2008.

  • Читать далее
    Категория: , , , , , , , ,
    Просмотров: 957
    Ответов: 0

    Tips for DBA: Замена для стандартного "Back Up Database Task"

    отправлено 8 октября 2009 г. 11:11 участником agladchenko

    Очень часто получается так, что реальные бизнес -требования оказываются сложнее, чем возможности мастеров программного инструментария, поставляемого разными производителями ПО для задач администрирования SQL Server 2008. Например, недавно мне стало недостаточно гибкости мастера создания задачи резервного копирования базы данных для стандартного плана обслуживания БД. У меня возникла необходимость делать копию в несколько фалов на разных дисковых массивах и поддерживать хронологию копий по единым правилам. В несколько файлов выполнять резервное копирование бывает необходимо для повышения производительности этой операции, например, как это рекомендовано в этой статье: "A Technical Case Study: Fast and Reliable Backup and Restore of Multi-Terabytes Database over the Network".
    Мастер SSMS может либо поддерживать хронологию для одного файла копий, либо копировать в фиксированные имена нескольких указанных файлов. К счастью, совершенно не составляет труда заменить задачу резервного копирования на задачу исполнения сценария T-SQL, в котором выполнить нужную работу. Ниже представлен соответствующий шаблон сценария, взяв который за основу можно составить необходимую задачу исполнения сценария T-SQL.

      DECLARE @path varchar(128)
      DECLARE @DBName AS nvarchar(4000) = 'ИМЯБАЗЫДАННЫХ'
      DECLARE @File1 AS nvarchar(4000), @File2 AS nvarchar(4000), @File3 AS nvarchar(4000)
      -- Если диск для копий один, и он корректно задан, узнать путь к папке копий можно так:
      EXEC master..xp_regread
          @rootkey='HKEY_LOCAL_MACHINE',
          @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
          @value_name='BackupDirectory',
          @value=@path OUTPUT
      -- Формируем часть имени файла, в которой фиксируется имя БД и время создания копии
      DECLARE @FileName AS nvarchar(4000) = @path + '\' + @DBName +'\' + @DBName + '_' + 'backup_' +
          CONVERT(nvarchar(4),YEAR(CURRENT_TIMESTAMP), 112 ) + '_' +
          CASE MONTH(CURRENT_TIMESTAMP)
              WHEN 1 THEN '01' WHEN 2 THEN '02' WHEN 3 THEN '03'
              WHEN 4 THEN '04' WHEN 5 THEN '05' WHEN 6 THEN '06'
              WHEN 7 THEN '07' WHEN 8 THEN '08' WHEN 9 THEN '09'
              ELSE CONVERT(nvarchar(2),MONTH(CURRENT_TIMESTAMP), 112 ) END
          + '_' +
          CASE DAY(CURRENT_TIMESTAMP)
              WHEN 1 THEN '01' WHEN 2 THEN '02' WHEN 3 THEN '03'
              WHEN 4 THEN '04' WHEN 5 THEN '05' WHEN 6 THEN '06'
              WHEN 7 THEN '07' WHEN 8 THEN '08' WHEN 9 THEN '09'
              ELSE CONVERT(nvarchar(2),DAY(CURRENT_TIMESTAMP), 112 ) END
          + '_' +
          REPLACE(REPLACE(CAST(CONVERT(time(7),CURRENT_TIMESTAMP, 109 ) AS nvarchar(14)),':',''),'.','_');
      -- Добавляем к пути и имени файла идентификаторы и расширения
      SELECT @File1 = @FileName + + '01.bak', @File2 = @FileName + + '02.bak', @File3 = @FileName + + '03.bak'
      -- Запускаем резервное копирование в три файла.
      BACKUP DATABASE [ИМЯБАЗЫДАННЫХ] TO
              DISK = @File1,
              DISK = @File2,
              DISK = @File3
      WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10

    ...(read more)


    Читать далее
    Категория: , , , , , , , , , ,
    Просмотров: 981
    Ответов: 0

    Электронные книги от ISV Team

    отправлено 1 октября 2009 г. 10:17 участником agladchenko

    Оригинал тут: http://blogs.technet.com/isv_team/archive/2009/09/30/3284070.aspx

     

    Электронные книги для вас

    Published 30 September 09 06:02 PM

    Для разработчиков и ИТ-специалистов мы подготовили подборку электронных версий книг Алексея Федорова:

    • Microsoft Windows Server 2008. Краткий обзор ключевых новинок
      • В книге рассматриваются основные нововведения, появившиеся в  Windows Server 2008, которые могут представлять интерес для ИТ-специалистов и разработчиков, приводятся сценарии использования новинок этой серверной операционной системы и обсуждаются новые и расширенные программные интерфейсы
    • Microsoft SQL Server 2008. Краткий обзор ключевых новинок
      • В книге обсуждаются ключевые новинки  SQL Server 2008 – новая функциональность в T-SQL, расширенные типы данных, динамичная разработка, интуитивное представление, приводятся рекомендации по использованию для ИТ-специалистов и разработчиков, перечисляются ключевые ресурсы по SQL Server 2008
    • Microsoft Visual Studio 2008. Краткий обзор ключевых новинок
      • В книге обсуждаются новые возможности средства разработки Visual Studio 2008, новинки в языках программирования и библиотеке классов .NET Framework
    • Знакомство с Visual Studio Team System 2008
      • В книге приводится описание новых возможностей коллективной разработки с использованием Visual Studio Team System 2008
    • Office Business Applications. Ключевые сценарии и типовые подходы к реализации
      • Данная книга посвящена обсуждению архитектуры OBA – приводятся рекомендации по выбору технологии и обсуждается более 20 ключевых сценариев интеграции с клиентскими и серверными продуктами семейства Microsoft Office

    А также пособия по обеспечению совместимости приложений с Windows Vista и Windows 7:

    И обзор Windows Internet Explorer 8 для ИТ-специалистов и разработчиков - Windows Internet Explorer 8. Краткий обзор ключевых новинок

    АФ


    Читать далее
    Категория: , , , , , , , ,
    Просмотров: 996
    Ответов: 1

    Электронная документация по Microsoft SQL Server 2008 (Июль 2009 г.)

    отправлено 29 сентября 2009 г. 14:31 участником agladchenko

    На сайте загрузки Майкрософт доступен для скачивания июльский выпуск комплекта электронной документации по Microsoft SQL Server 2008.

    Краткие сведения


    Читать далее
    Категория: , , , ,
    Просмотров: 923
    Ответов: 0

    Как справиться с PAGELATCH при высоко-параллельных INSERT-нагрузках

    отправлено 28 сентября 2009 г. 16:46 участником agladchenko

    По материалам статьи: "Resolving PAGELATCH Contention on Highly Concurrent INSERT Workloads".
    Авторы: Thomas Kejser, Lindsey Allen, Arvind Rao и Michael Thomassy
    При участии и с рецензиями: Mike Ruthruff, Lubor Kollar, Prem Mehra, Burzin Patel, Michael Thomassy, Mark Souza, Sanjay Mishra, Peter Scharlock, Stuart Ozer, Kun Cheng и Howard Yin
    Перевод Александра Гладченко

    Введение

    Недавно, мы проводили лабораторные испытания в Microsoft Enterprise Engineering Center, при которых использовалась большая рабочая нагрузка, характерная для OLTP систем. Целью этой лабораторной работы было определить, что случится при увеличении числа процессоров с 64 до 128, при обслуживании Microsoft SQL Server интенсивной рабочей нагрузки (примечание: эта конфигурация была ориентирована на релиз Microsoft SQL Server 2008 R2). Рабочая нагрузка представляла собой хорошо распараллеленные операции вставки, направляемые в несколько больших таблиц.
    Рабочая нагрузка масштабировалась до 128 процессорных ядер, но в статистике ожиданий было очень много кратких блокировок PAGELATCH_UP и PAGELATCH_EX. Средняя продолжительность ожидания была десятки миллисекунд, и таких ожиданий было очень много. Такое их количество оказалось для нас неожиданностью, ожидалось, что продолжительность не будет превышать несколько миллисекунд.
    В этой технической заметке вначале будет описано, как диагностировать подобную проблему и как для разрешения подобной проблемы использовать секционирование таблиц.

    Диагностика проблемы

    Когда в sys.dm_os_wait_stats наблюдается большое число PAGELATCH, с помощью sys.dm_os_waiting_tasks можно определить сессию и ресурс, который задача ожидает, например, с помощью этого сценария:

      SELECT session_id, wait_type, resource_description
      FROM sys.dm_os_waiting_tasks
      WHERE wait_type LIKE 'PAGELATCH%'

    Пример результата:

    В столбце resource_description указаны местоположения страниц, к которым ожидают доступ сессии, местоположение представлено в таком формате:

      <database_id>:<file_id>:<page_id>

    Опираясь на значения в столбце resource_description, можно составить довольно сложный сценарий, который предоставит выборку всех попавших в список ожидания страниц:

      SELECT wt.session_id, wt.wait_type, wt.wait_duration_ms
      , s.name AS schema_name
      , o.name AS object_name
      , i.name AS index_name
      FROM sys.dm_os_buffer_descriptors bd
      JOIN (
      SELECT *
        , CHARINDEX(':', resource_description) AS file_index
        , CHARINDEX(':', resource_description
        , CHARINDEX(':', resource_description)) AS page_index
        , resource_description AS rd
      FROM sys.dm_os_waiting_tasks wt
      WHERE wait_type LIKE 'PAGELATCH%'
      ) AS wt
      ON bd.database_id = SUBSTRING(wt.rd, 0, wt.file_index)
      AND bd.file_id = SUBSTRING(wt.rd, wt.file_index, wt.page_index)
      AND bd.page_id = SUBSTRING(wt.rd, wt.page_index, LEN(wt.rd))
      JOIN sys.allocation_units au ON bd.allocation_unit_id = au.allocation_unit_id
      JOIN sys.partitions p ON au.container_id = p.partition_id
      JOIN sys.indexes i ON p.index_id = i.index_id AND p.object_id = i.object_id
      JOIN sys.objects o ON i.object_id = o.object_id
      JOIN sys.schemas s ON o.schema_id = s.schema_id

      
      

    Сценарий показал, что ожидаемые страницы относятся к кластеризованному индексу, определённому первичным ключом таблицы с представленной ниже структурой:

      CREATE TABLE HeavyInsert (
      ID INT PRIMARY KEY CLUSTERED
      , col1 VARCHAR(50)
      ) ON [PRIMARY]

    Что происходит, почему возникает очередь ожиданий к страницам данных индекса - всё это будет рассмотрено в этой технической заметке.

    Основная информация

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

    1. В журнале транзакций создаётся запись о том, что строка изменилась.
    2. Осуществляется поиск в В-дереве местонахождения той страницы, куда должна будет попасть новая запись.
    3. Осуществляется наложение на эту страницу краткой блокировки PAGELATCH_EX, которая призвана воспрепятствовать изменениям из других потоков.
    4. Осуществляется добавление строки на страницу и, если это необходимо, осуществляется пометка этой страницы как "грязной".
    5. Осуществляется снятие краткой блокировки со страницы.

    В итоге, страница должна будет быть сброшена на диск процессом контрольной точкой или отложенной записи.
    Если же все вставки строк направлены на ту же самую страницу, можно наблюдать рост очереди к этой странице. Даже притом, что краткая блокировка весьма непродолжительна, она может стать причиной конкуренции при высоком параллелизме рабочей нагрузки. У нашего клиента, первый и единственный столбец в индексе являлся монотонно возрастающим ключом. Из-за этого, каждая новая вставка шла на ту же самую страницу в конце В-дерева, пока эта страница не была заполнена. Рабочие нагрузки, которые используют в качестве первичного ключа IDENTITY или другие столбцы с последовательно увеличивающимися значениями, также могут столкнуться с подобной проблемой, если распараллеливание достаточно высоко.

    Решение

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

      CREATE PARTITION FUNCTION pf_hash (INT) AS RANGE LEFT FOR VALUES (0,1,2)
      CREATE PARTITION SCHEME ps_hash AS PARTITION pf_hash ALL TO ([PRIMARY])

    Представленный выше пример использует четыре секции. Число необходимых секций зависит от числа активных процессов, выполняющих операции INSERT в описанную выше таблицу. Есть некоторая сложность в секционировании таблицы с помощью хэш-столбца, например, в том что всякий раз, когда происходит выборка строк из таблицы, будут затронуты все секции. Это означает, что придётся обращаться более чем к одному В-дереву, т.е. не будет отброшенных оптимизатором за ненадобностью ненужных секций. Будет дополнительная нагрузка на процессоры и некоторое увеличение времени ожиданий процессоров, что побуждает минимизировать число планируемых секций (их должно быть минимальное количество, при котором не наблюдается PAGELATCH). В рассматриваемом нами случае, в системе нашего клиента имелось достаточно много резерва в утилизации процессоров, так что было вполне возможно допустить небольшую потерю времени для инструкций SELECT, и при этом увеличить до необходимых объёмов норму инструкций INSERT.
    Ещё одной сложностью является то, что нужен дополнительный столбец, по которому будет выполняться секционирование, т.е. на основании значения которого будут распределяться вставки по четырем секциям. Такого столбца изначально в сценарии Microsoft Enterprise Engineering Center не было. Однако, его достаточно просто было создать. Для этого использовался тот факта, что столбец ID монотонно увеличивается с приращением равным единице, и здесь легко применима довольно простая хеш-функция:

      CREATE TABLE HeavyInsert_Hash(
        ID INT NOT NULL
        , col1 VARCHAR(50)
        , HashID AS CAST(ABS(ID % 4) AS TINYINT) PERSISTED NOT NULL)

    С помощью столбца HashID, вставки в четыре секции будут выполняться циклически.
    Создаём кластеризованный индекс следующим образом:

      CREATE UNIQUE CLUSTERED INDEX CIX_Hash
      ON HeavyInsert_Hash (ID, HashID) ON ps_hash(HashID)

    Используя новую схему таблицы с секционированием вместо первоначального варианта таблицы, мы сумели избавиться от очередей PAGELATCH и повысить скорость вставки. Этого удалось достичь за счёт балансировки вставки между несколькими секциями и высокого параллелизма. Вставка происходит в несколько страниц, и каждая страница размещается в своей собственной структуре В-дерева. Для нашего клиента удалось повысить производительность вставки на 15 процентов, и справится с большой очередью PAGELATCH к горячей странице индекса одной таблицы. Но при этом удалось также оставить достаточно большой резерв циклов процессоров, что оставило возможность сделать аналогичную оптимизацию для другой таблицы, тоже с высокой нормой вставки.
    Строго говоря, суть этой уловки в оптимизации логической схемы первичного ключа таблицы. Однако, потому что ключ просто стал длиннее на величину хеш-функции относительно изначального ключа, дубликатов для столбца ID удалось избежать. Уникальные индексы по единственному столбцу таблицы зачастую становятся причиной проблем с очередями PAGELATCH. Но даже если эту проблему удастся устранить, у таблицы может оказаться другой, некластеризованный индекс, который будет подвержен той же самой проблеме. Как правило, проблема наблюдается для уникальных ключей на единственном столбце, где каждая вставка попадает на одну и ту же страницу. Если и у других таблиц индексы подвержены проблеме с PAGELATCH, можно применить эту же уловку с секционированием к индексам таких таблиц, используя такой же ключ с хэшем в качестве первичного ключа.
    Не всегда возможно внести изменения в приложение, особенно, если оно является плодом усилий третьих фирм. Но если изменение запросов возможно, становится доступной их оптимизация за счёт добавления к ним условий фильтрации по предикатам первичного ключа.

    Пример: Чтобы отбросить ненужные секции, можно внести следующие изменения в сценарий:

      SELECT * FROM HeavyInsert_Hash
      WHERE ID = 42

    Который после изменений будет выглядеть так:

      SELECT * FROM HeavyInsert_Hash
      WHERE ID = 42 AND HashID = 42 % 4

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

    ...(read more)


    Читать далее
    Категория: , , , , , , , , ,
    Просмотров: 1105
    Ответов: 0

    Cumulative update package 4 for SQL Server 2008 Service Pack 1

    отправлено 22 сентября 2009 г. 18:12 участником agladchenko

    22 сентября 2009г. На сайте загрузки Майкрософт стало доступно четвёртое кумулятивное обновление для SQL Server 2008 SP1. Страница описания и заказа обновления: Cumulative update package 4 for SQL Server 2008 Service Pack 1
    Обсудить можно тут: http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=697466

    Обновление применимо для следующих версий:

    • Microsoft SQL Server 2008 Standard
    • Microsoft SQL Server 2008 Standard Edition for Small Business
    • Microsoft SQL Server 2008 Developer
    • Microsoft SQL Server 2008 Enterprise
    • Microsoft SQL Server 2008 Workgroup
    • Microsoft SQL Server 2008 Web
    • Microsoft SQL Server 2008 Express
    • Microsoft SQL Server 2008 Express with Advanced Services
    • Microsoft SQL Server 2008 Analysis Services
    • Microsoft SQL Server 2008 Reporting Services

    Платформа Имя файла Сборка Размер файла
    (в байтах)
    Дата изменения
    x86 SQL_Server_2008_SP1_Cumulative_Update_4_SNAC 10.00.2734.00 3834831 9/22/2009 7:23:35 AM
    x86 SQL_Server_2008_SP1_Cumlative_Update_4 10.00.2734.00 171569601 9/22/2009 7:11:43 AM
    x64 SQL_Server_2008_SP1_Cumulative_Update_4_SNAC 10.00.2734.00 7012764 9/22/2009 7:23:53 AM
    x64 SQL_Server_2008_SP1_Cumlative_Update_4 10.00.2734.00 237547729 9/22/2009 7:13:01 AM
    ia64 SQL_Server_2008_SP1_Cumlative_Update_4 10.00.2734.00 233922745 9/22/2009 7:13:49 AM
    ia64 SQL_Server_2008_SP1_Cumulative_Update_4_SNAC 10.00.2734.00 9325459 9/22/2009 7:22:26 AM

    ВАЖНАЯ ИНФОРМАЦИЯ

    Для вашего удобства мы поместили запрошенное исправление на веб-узел HTTP. Вы можете загрузить это исправление без ненужного заполнения вашего почтового ящика.

    ВНИМАНИЕ! Для данного исправления не было проведено полное тестирование. Поэтому оно предназначено только для систем или компьютеров, в которых произошла конкретная ошибка, описанная в одной или более статей базы знаний Microsoft. Номера статей перечислены в поле "Номера статей из базы знаний" в таблице в конце данного сообщения. Если данное исправление стало причиной каких-либо проблем с совместимостью или ошибок при установке, мы рекомендуем подождать выхода следующего выпуска пакета обновления. Новый пакет обновления будет содержать полностью протестированную версию данного исправления. Мы понимаем, что очень сложно определить, связаны ли какие-либо проблемы с совместимостью или ошибки при установке с данным исправлением. Если вы хотите получить подтверждение, что данное исправление предназначено для устранения именно возникшей у вас проблемы, либо вы считаете, что из-за данного исправления у вас возникли проблемы с совместимостью или ошибки при установке, свяжитесь со специалистами службы поддержки, и они вам помогут. Для получения контактных сведений службы поддержки скопируйте приведенную ниже ссылку и вставьте ее в свой веб-обозреватель:

       http://support.microsoft.com/contactus/

    Для получения сведений о дополнительных вариантах поддержки скопируйте приведенную ниже ссылку и вставьте ее в свой веб-обозреватель:

       http://support.microsoft.com/

    Перед установкой данного исправления
    ------------------------------

    Если вы решили установить данное исправление, обратите внимание на следующую информацию:

    Не разворачивайте исправление в рабочей среде, предварительно не проверив его работу.

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

    Дополнительные сведения об исправлении
    -----------------------------

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

    ПРИМЕЧАНИЕ. Пароли действительны в течение семи дней. Чтобы вы смогли извлечь файлы, загрузите пакет в течение семи следующих дней. Если вы получите данное сообщение менее чем за семь дней до окончания цикла существования пароля, вы получите два пароля. В этом случае, если вы загрузите пакет с исправлением до даты, указанной в поле "Дата изменения пароля" в таблице в конце данного сообщения, воспользуйтесь первым паролем. Вторым паролем можно воспользоваться, если вы загрузите пакет с исправлением после даты, указанной в поле "Дата изменения пароля".

    ПРИМЕЧАНИЕ. Для вашего удобства адрес расположения исправления указан в виде гиперссылки. Чтобы подключиться к исправлению, можно щелкнуть гиперссылку в поле "Расположение" в таблице в конце данного сообщения, после чего веб-обозреватель автоматически откроет расположение исправления. Однако в некоторых программах электронной почты использование гиперссылок запрещено. В этом случае просто скопируйте гиперссылку, указанную в поле "Расположение", и вставьте ее в поле адреса веб-обозревателя. Необходимо скопировать весь текст (без пробелов) между скобками в адресе http://.

    Пакет:
    -----------------------------------------------------------
    -----------------------------------------------------------
    Номера статей из базы данных: 973602
    Язык: All (Global)
    Платформа: i386
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/sp1/SQL_Server_2008_SP1_Cumulative_Update_4_/10.00.2734.00/free/395065_intl_i386_zip.exe )
    Пароль: $eVtxh$d

    -----------------------------------------------------------
    Номера статей из базы данных: 948567, 949862, 953626, 956574, 956686, 967315, 967524, 968722, 969386, 970014, 970044, 970133, 970719, 971753, 971780, 971898, 971914, 972271, 972458, 972537, 972650, 972687, 972893, 972936, 972937, 972939, 973087, 973090, 973102, 973103, 973204, 973223, 973255, 973292, 973300, 973302, 973303, 973524, 973580, 973588, 973602, 973696, 973877, 973897, 973953, 974076, 974231, 974262, 974269, 974276, 974289, 974290, 974371, 974398, 974404, 974559, 974712, 974766, 974816, 974948, 975055, 975171, 975272
    Язык: All (Global)
    Платформа: i386
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/sp1/SQL_Server_2008_SP1_Cumlative_Update_4/10.00.2734.00/free/395058_intl_i386_zip.exe )
    Пароль: jWmLdCt

    -----------------------------------------------------------
    Номера статей из базы данных: 973602
    Язык: All (Global)
    Платформа: x64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/sp1/SQL_Server_2008_SP1_Cumulative_Update_4_/10.00.2734.00/free/395066_intl_x64_zip.exe )
    Пароль: 5E+rKhnI

    -----------------------------------------------------------
    Номера статей из базы данных: 948567, 949862, 953626, 956574, 956686, 967315, 967524, 968722, 969386, 970014, 970044, 970133, 970719, 971753, 971780, 971898, 971914, 972271, 972458, 972537, 972650, 972687, 972893, 972936, 972937, 972939, 973087, 973090, 973102, 973103, 973204, 973223, 973255, 973292, 973300, 973302, 973303, 973524, 973580, 973588, 973602, 973696, 973877, 973897, 973953, 974076, 974231, 974262, 974269, 974276, 974289, 974290, 974371, 974398, 974404, 974559, 974712, 974766, 974816, 974948, 975055, 975171, 975272
    Язык: All (Global)
    Платформа: x64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/sp1/SQL_Server_2008_SP1_Cumlative_Update_4/10.00.2734.00/free/395059_intl_x64_zip.exe )
    Пароль: @aLXA)PI

    -----------------------------------------------------------
    Номера статей из базы данных: 948567, 949862, 953626, 956574, 956686, 967315, 967524, 968722, 969386, 970014, 970044, 970133, 970719, 971753, 971780, 971898, 971914, 972271, 972458, 972537, 972650, 972687, 972893, 972936, 972937, 972939, 973087, 973090, 973102, 973103, 973204, 973223, 973255, 973292, 973300, 973302, 973303, 973524, 973580, 973588, 973602, 973696, 973877, 973897, 973953, 974076, 974231, 974262, 974269, 974276, 974289, 974290, 974371, 974398, 974404, 974559, 974712, 974766, 974816, 974948, 975055, 975171, 975272
    Язык: All (Global)
    Платформа: ia64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/sp1/SQL_Server_2008_SP1_Cumlative_Update_4/10.00.2734.00/free/395060_intl_ia64_zip.exe )
    Пароль: bbmD@5a

    -----------------------------------------------------------
    Номера статей из базы данных: 973602
    Язык: All (Global)
    Платформа: ia64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/sp1/SQL_Server_2008_SP1_Cumulative_Update_4_/10.00.2734.00/free/395064_intl_ia64_zip.exe )
    Пароль: K@bl+w0v

    ПРИМЕЧАНИЕ. Для перехода к расположению исправления необходимо указать весь текст между "(" и ")".


    Читать далее
    Категория: , , , , , , , , ,
    Просмотров: 840
    Ответов: 0

    Cumulative Update 7 package for SQL Server 2008

    отправлено 22 сентября 2009 г. 11:37 участником agladchenko

    21 сентября 2009г. На сайте загрузки Майкрософт стало доступно седьмое кумулятивное обновление для SQL Server 2008. Страница описания и заказа обновления: Cumulative Update 7 package for SQL Server 2008

    Обновление применимо для следующих версий:

    • Microsoft SQL Server 2008 Standard
    • Microsoft SQL Server 2008 Standard Edition for Small Business
    • Microsoft SQL Server 2008 Developer
    • Microsoft SQL Server 2008 Enterprise
    • Microsoft SQL Server 2008 Workgroup
    • Microsoft SQL Server 2008 Web
    • Microsoft SQL Server 2008 Express
    • Microsoft SQL Server 2008 Express with Advanced Services
    • Microsoft SQL Server 2008 Analysis Services
    • Microsoft SQL Server 2008 Reporting Services
    Платформа Имя файла Сборка Размер файла
    (в байтах)
    Дата изменения
    x86 SQL_Server_2008_RTM_Cumlative_Update_8 10.00.1818.00 177881111 9/21/2009 6:22:56 PM
    x86 SQL_Server_2008_Cumulative_Update_8_SNAC 10.00.1818.00 3780472 9/21/2009 6:29:15 PM
    x86 SQL_Server_2008_Cumulative_Update_8_RS_Sharepoint 10.00.1818.00 39653862 9/21/2009 6:26:37 PM
    x64 SQL_Server_2008_Cumulative_Update_8_SNAC 10.00.1818.00 6958530 9/21/2009 6:28:53 PM
    x64 SQL_Server_2008_Cumulative_Update_8_RS_Sharepoint 10.00.1818.00 39763312 9/21/2009 6:26:54 PM
    x64 SQL_Server_2008_RTM_Cumlative_Update_8 10.00.1818.00 250309981 9/21/2009 6:22:41 PM
    ia64 SQL_Server_2008_RTM_Cumlative_Update_8 2008 10.00.1818.00 248318776 9/21/2009 6:22:02 PM
    ia64 SQL_Server_2008_Cumulative_Update_8_SNAC 10.00.1818.00 9268618 9/21/2009 6:28:18 PM

    ВАЖНАЯ ИНФОРМАЦИЯ

    Для вашего удобства мы поместили запрошенное исправление на веб-узел HTTP. Вы можете загрузить это исправление без ненужного заполнения вашего почтового ящика.

    ВНИМАНИЕ! Для данного исправления не было проведено полное тестирование. Поэтому оно предназначено только для систем или компьютеров, в которых произошла конкретная ошибка, описанная в одной или более статей базы знаний Microsoft. Номера статей перечислены в поле "Номера статей из базы знаний" в таблице в конце данного сообщения. Если данное исправление стало причиной каких-либо проблем с совместимостью или ошибок при установке, мы рекомендуем подождать выхода следующего выпуска пакета обновления. Новый пакет обновления будет содержать полностью протестированную версию данного исправления. Мы понимаем, что очень сложно определить, связаны ли какие-либо проблемы с совместимостью или ошибки при установке с данным исправлением. Если вы хотите получить подтверждение, что данное исправление предназначено для устранения именно возникшей у вас проблемы, либо вы считаете, что из-за данного исправления у вас возникли проблемы с совместимостью или ошибки при установке, свяжитесь со специалистами службы поддержки, и они вам помогут. Для получения контактных сведений службы поддержки скопируйте приведенную ниже ссылку и вставьте ее в свой веб-обозреватель:

       http://support.microsoft.com/contactus/

    Для получения сведений о дополнительных вариантах поддержки скопируйте приведенную ниже ссылку и вставьте ее в свой веб-обозреватель:

       http://support.microsoft.com/

    Перед установкой данного исправления
    ------------------------------

    Если вы решили установить данное исправление, обратите внимание на следующую информацию:

    Не разворачивайте исправление в рабочей среде, предварительно не проверив его работу.

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

    Дополнительные сведения об исправлении
    -----------------------------

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

    ПРИМЕЧАНИЕ. Пароли действительны в течение семи дней. Чтобы вы смогли извлечь файлы, загрузите пакет в течение семи следующих дней. Если вы получите данное сообщение менее чем за семь дней до окончания цикла существования пароля, вы получите два пароля. В этом случае, если вы загрузите пакет с исправлением до даты, указанной в поле "Дата изменения пароля" в таблице в конце данного сообщения, воспользуйтесь первым паролем. Вторым паролем можно воспользоваться, если вы загрузите пакет с исправлением после даты, указанной в поле "Дата изменения пароля".

    ПРИМЕЧАНИЕ. Для вашего удобства адрес расположения исправления указан в виде гиперссылки. Чтобы подключиться к исправлению, можно щелкнуть гиперссылку в поле "Расположение" в таблице в конце данного сообщения, после чего веб-обозреватель автоматически откроет расположение исправления. Однако в некоторых программах электронной почты использование гиперссылок запрещено. В этом случае просто скопируйте гиперссылку, указанную в поле "Расположение", и вставьте ее в поле адреса веб-обозревателя. Необходимо скопировать весь текст (без пробелов) между скобками в адресе http://.

    Пакет:
    -----------------------------------------------------------
    -----------------------------------------------------------
    Номера статей из базы данных: 956686, 969386, 970307, 971020, 971753, 972184, 972271, 972537, 972687, 973087, 973103, 973524, 973601, 973877, 974006, 974036, 974262, 974269, 974290, 974398, 974594, 974766, 974816, 975027, 975037, 975414
    Язык: All (Global) Платформа: i386
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/nosp/SQL_Server_2008_RTM_Cumlative_Update_8/10.00.1818.00/free/395026_intl_i386_zip.exe )
    Пароль: BlXW!E2

    -----------------------------------------------------------
    Номера статей из базы данных: 973601
    Язык: All (Global)
    Платформа: i386
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/nosp/SQL_Server_2008_Cumulative_Update_8_SNAC/10.00.1818.00/free/395033_intl_i386_zip.exe )
    Пароль: kL9q)yQ-

    -----------------------------------------------------------
    Номера статей из базы данных: 973601
    Язык: All (Global)
    Платформа: i386
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/nosp/SQL_Server_2008_Cumulative_Update_8_RS_S/10.00.1818.00/free/395027_intl_i386_zip.exe )
    Пароль: ]jr2LTX6$

    -----------------------------------------------------------
    Номера статей из базы данных: 973601
    Язык: All (Global)
    Платформа: x64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/nosp/SQL_Server_2008_Cumulative_Update_8_SNAC/10.00.1818.00/free/395032_intl_x64_zip.exe )
    Пароль: IhBnlyK@

    -----------------------------------------------------------
    Номера статей из базы данных: 973601
    Язык: All (Global)
    Платформа: x64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/nosp/SQL_Server_2008_Cumulative_Update_8_RS_S/10.00.1818.00/free/395028_intl_x64_zip.exe )
    Пароль: i)Ytna+J

    -----------------------------------------------------------
    Номера статей из базы данных: 956686, 969386, 970307, 971020, 971753, 972184, 972271, 972537, 972687, 973087, 973103, 973524, 973601, 973877, 974006, 974036, 974262, 974269, 974290, 974398, 974594, 974766, 974816, 975027, 975037, 975414
    Язык: All (Global)
    Платформа: x64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/nosp/SQL_Server_2008_RTM_Cumlative_Update_8/10.00.1818.00/free/395025_intl_x64_zip.exe )
    Пароль: QyZfVO

    -----------------------------------------------------------
    Номера статей из базы данных: 956686, 969386, 970307, 971020, 971753, 972184, 972271, 972537, 972687, 973087, 973103, 973524, 973601, 973877, 974006, 974036, 974262, 974269, 974290, 974398, 974594, 974766, 974816, 975027, 975037, 975414
    Язык: All (Global)
    Платформа: ia64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/nosp/SQL_Server_2008_RTM_Cumlative_Update_8/10.00.1818.00/free/395024_intl_ia64_zip.exe )
    Пароль: 9jePUc3

    -----------------------------------------------------------
    Номера статей из базы данных: 973601
    Язык: All (Global)
    Платформа: ia64
    Расположение: ( http://hotfixv4.microsoft.com/SQL%20Server%202008/nosp/SQL_Server_2008_Cumulative_Update_8_SNAC/10.00.1818.00/free/395030_intl_ia64_zip.exe )
    Пароль: KR-32+1C{u

    ПРИМЕЧАНИЕ. Для перехода к расположению исправления необходимо указать весь текст между "(" и ")".


    Читать далее
    Категория: , , , , , , , , , ,
    Просмотров: 977
    Ответов: 0

    Query Processor Modeling Extensions

    отправлено 1 сентября 2009 г. 17:19 участником agladchenko

    По материалам стать Иан Джоз (Ian Jose): Query Processor Modelling Extensions in SQL Server 2005 SP1
    Перевод Александра Гладченко
    Редактура Алексея Халако

    В этой статье Иан рассказывает про флаг трассировки T2301, который включает более тонкую оптимизацию запросов, что бывает полезно для больших баз данных с нагрузкой, характерной для систем поддержки принятия решений. В тестах TPC-H этот флаг используется очень часто и разными вендорами.

    Появившееся в SQL Server 2005 SP1 расширение оптимизатора Query Processor Modelling Extensions можно включить с помощью флага трассировки 2301. Это расширение обеспечивает возможность системы моделирования оптимизатора запросов выбирать более производительные планы исполнения сложных запросов к базе данных. Улучшенное моделирование планов запроса в некоторых случаях может привести к существенному повышению производительности исполнения запросов. Однако, эти расширения моделирования процессора запросов, могут привести к заметному увеличенному времени компиляции, и поэтому рекомендуются для использования только в тех приложениях, в которых компиляций бывает немного, и они происходят нечасто. Были добавлены следующие расширения моделирования:
    • Целочисленное моделирование (Integer Modelling)

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

    • Углублённое использование гистограммы (Comprehensive Histogram Usage)

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

    • Предположение основного ограничения (Base Containment Assumption)

      Обычно, при соединении двух отношений мы предполагаем, что для Х определенных кодовых точек (которые относятся к тому же самому ключевому диапазону, что и отношение R) при соединении с Y уникальных точек того же самого ключевого диапазона, что и в отношении S, всегда найдётся пара MIN(X,Y). Такое допущение называют "Простое ограничение". Мы предполагаем, что наименьшее число из уникальных точек кода соотносится с точками кода на другой стороне. Это моделирование игнорирует относительную совокупность уникальных точек кода в основных формах R и S, и также игнорирует любую фильтрацию, которая была применена к основными формами R и S перед соединением. Основное ограничение основывается на предположение, что ограничение применяется только к основным отношениям и использует вероятностные методы вычисления степени соединения. Кроме того, подразумевается, что модели фильтров применены правильно, так как их поведение очень отличается от ортогональных фильтров.

    • Углублённое изменение отображения плотности (Comprehensive Density Remapping)

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

    • Углублённое согласование плотности (Comprehensive Density Matching)

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

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

    ...(read more)


    Читать далее
    Категория: , , , , , , , , ,
    Просмотров: 1037
    Ответов: 0

    Ицик Бен-Ган: "Microsoft SQL Server 2008. Основы T-SQL"

    отправлено 27 августа 2009 г. 11:16 участником agladchenko

    Информация о книге:

    Автор: Ицик Бен-Ган
    Название: Microsoft SQL Server 2008. Основы T-SQL
    Издательства: БХВ-Петербург, Русская Редакция, 2009 г.
    Серия: Внесерийные книги
    ISBN: 978-5-9775-0220-8
    Формат: 70*100 1/16
    Объем: 432
    Цена: Купить на OZON.RU (427 руб.)

    В книге изложены теоретические основы формирования запросов и программирования на языке T-SQL: однотабличные запросы, соединения, подзапросы, табличные выражения, операции над множествами, реорганизация данных и наборы группирования. Описываются различные аспекты извлечения и модификации данных, обсуждаются параллелизм и транзакции, приводится обзор программируемых объектов. Для дополнения теории практическими навыками в книгу включены упражнения, в том числе и повышенной сложности.

    Полное содержание

    Оглавление ОБ АВТОРЕ 2
    БЛАГОДАРНОСТИ 3
    ВВЕДЕНИЕ 5
    Для кого эта книга 5
    О чем эта книга 5
    Сопроводительный материал 6
    Аппаратные и программные требования 6
    Поиск дополнительной интерактивной информации 7
    Сопровождение книги 7
    Вопросы и комментарии 7

    ГЛАВА 1. ОСНОВЫ ПОСТРОЕНИЯ ЗАПРОСОВ И ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ T-SQL

    9
    Теоретические основы 9
    Язык SQL 10
    Теория множеств 11
    Логика предикатов 12
    Реляционная модель 13
    Жизненный цикл данных 18
    Архитектура SQL Server 21
    Экземпляры SQL Server 21
    Базы данных 23
    Схемы и объекты 26
    Создание таблиц и определение целостности данных 27
    Создание таблиц 28
    Определение целостности данных 30
    Резюме 33

    ГЛАВА 2. ОДНОТАБЛИЧНЫЕ ЗАПРОСЫ

    34
    Элементы инструкции SELECT 34
    Элемент FROM 36
    Элемент WHERE 38
    Элемент GROUP BY 39
    Элемент HAVING 44
    Элемент SELECT 45
    Элемент ORDER BY 51
    Дополнительный элемент TOP 53
    Элемент OVER 56
    Предикаты и операции 63
    Выражение CASE 66
    Значение NULL 69
    Одновременно выполняемые операции 74
    Работа с символьными данными 76
    Типы данных 76
    Набор параметров символьной обработки 77
    Операции и функции 79
    Предикат LIKE 86
    Работа с датами и временем 88
    Типы данных Date и Time 88
    Константы 89
    Раздельная обработка даты и времени суток 92
    Фильтрация диапазонов дат 94
    Функции обработки дат и времени суток 94
    Запросы метаданных 101
    Представления каталогов 101
    Представления информационной схемы 102
    Системные хранимые процедуры и функции 103
    Резюме 104
    Упражнения 105
    Упражнение 2.1 105
    Упражнение 2.2 (дополнительное, повышенной сложности) 105
    Упражнение 2.3 106
    Упражнение 2.4 106
    Упражнение 2.5 107
    Упражнение 2.6 107
    Упражнение 2.7 107
    Упражнение 2.8 108

    ГЛАВА 3. СОЕДИНЕНИЯ (JOIN)

    109
    Перекрестные соединения 110
    Синтаксическая запись ANSI SQL-92 110
    Синтаксическая запись ANSI SQL-89 111
    Перекрестные самосоединения 112
    Создание таблиц чисел 113
    Внутренние соединения 115
    Синтаксическая запись ANSI SQL-92 115
    Синтаксическая запись ANSI SQL-89 116
    Безопасность внутреннего соединения 117
    Дополнительные примеры соединений 117
    Составные соединения 118
    Соединения при условии неравенства 119
    Многотабличные соединения 121
    Внешние соединения 122
    Основные принципы внешних соединений 122
    Дополнения к основным принципам внешних соединений 125
    Резюме 134
    Упражнения 134
    Упражнение 3.1 135
    Упражнение 3.2 135
    Упражнение 3.3 (дополнительное, повышенной сложности) 136
    Упражнение 3.4 138
    Упражнение 3.5 138
    Упражнение 3.6 139
    Упражнение 3.7 139
    Упражнение 3.8 (дополнительное, повышенной сложности) 139
    Упражнение 3.9 (дополнительное, повышенной сложности) 140

    ГЛАВА 4 . ПОДЗАПРОСЫ

    142
    Независимые подзапросы 142
    Примеры независимых скалярных подзапросов 143
    Примеры независимых подзапросов с множеством значений 145
    Связанные подзапросы 149
    Предикат EXISTS 152
    Дополнения к основным сведениям о подзапросах 153
    Возврат предшествующего или последующего значений 153
    Итоги с накоплением 155
    Запросы, которые ведут себя плохо 156
    Резюме 161
    Упражнения 161
    Упражнение 4.1 162
    Упражнение 4.2 (дополнительное, повышенной сложности) 162
    Упражнение 4.3 163
    Упражнение 4.4 163
    Упражнение 4.5 164
    Упражнение 4.6 165
    Упражнение 4.7 (дополнительное, повышенной сложности) 165
    Упражнение 4.8 (дополнительное, повышенной сложности) 166

    ГЛАВА 5. ТАБЛИЧНЫЕ ВЫРАЖЕНИЯ

    167
    Производные таблицы 167
    Присвоение псевдонимов столбцов 169
    Применение аргументов 171
    Вложение 171
    Множественные ссылки 172
    Общие табличные выражения 173
    Назначение псевдонимов столбцов 174
    Применение аргументов 175
    Определение множественных ОТВ 175
    Множественные ссылки 176
    Рекурсивные ОТВ 177
    Представления 179
    Представления и элемент ORDER BY 181
    Необязательные параметры представления 183
    Подставляемые табличные функции 187
    Операция APPLY 189
    Резюме 192
    Упражнения 192
    Упражнение 5.1 192
    Упражнение 5.2 193
    Упражнение 5.3 193
    Упражнение 5.4 194
    Упражнение 5.5 194
    Упражнение 5.6 194
    Упражнение 5.7 (дополнительное, повышенной сложности) 195
    Упражнение 5.8 196
    Упражнение 5.9 197

    ГЛАВА 6. ОПЕРАЦИИ НАД МНОЖЕСТВАМИ

    198
    Операция UNION 199
    Операция UNION ALL 200
    Операция UNION DISTINCT 201
    Операция INTERSECT 202
    Операция INTERSECT DISTINCT 202
    Операция INTERSECT ALL 203
    Операция EXCEPT 205
    Операция EXCEPT DISTINCT 206
    Операция EXCEPT ALL 207
    Приоритет 208
    Хитрости для выполнения неподдерживаемых логических стадий 210
    Резюме 212
    Упражнения 212
    Упражнение 6.1 212
    Упражнение 6.2 213
    Упражнение 6.3 214
    Упражнение 6.4 215
    Упражнение 6.5 (дополнительное, повышенной сложности) 215

    ГЛАВА 7. РЕОРГАНИЗАЦИЯ ДАННЫХ И НАБОРЫ ГРУППИРОВАНИЯ

    217
    Разворачивание данных 217
    Разворачивание с помощью стандартного SQL 220
    Разворачивание с помощью собственной операции T-SQL PIVOT 221
    Сворачивание данных 224
    Сворачивание данных с помощью стандартного SQL 225
    Сворачивание с помощью собственной операции T-SQL UNPIVOT 227
    Наборы группирования 228
    Вложенный элемент GROUPING SETS 230
    Вложенный элемент CUBE 231
    Вложенный элемент ROLLUP 232
    Функции GROUPING и GROUPING_ID 234
    Резюме 237
    Упражнения 237
    Упражнение 7.1 237
    Упражнение 7.2 237
    Упражнение 7.3 238

    ГЛАВА 8. МОДИФИКАЦИЯ ДАННЫХ

    240
    Добавление данных 240
    Инструкция INSERT VALUES 240
    Инструкция INSERT SELECT 242
    Инструкция INSERT EXEC 243
    Инструкция SELECT INTO 244
    Инструкция BULK INSERT 245
    Свойство IDENTITY 246
    Удаление данных 250
    Инструкция DELETE 251
    Инструкция TRUNCATE 251
    DELETE на основе соединения 252
    Обновление данных 253
    Инструкция UPDATE 254
    UPDATE на основе соединения 255
    Присваивание в UPDATE 258
    Слияние данных 259
    Модификация данных с помощью табличных выражений 264
    Модификации с помощью элемента TOP 267
    Элемент OUTPUT 268
    INSERT с OUTPUT 269
    DELETE с OUTPUT 270
    UPDATE с OUTPUT 271
    MERGE с OUTPUT 272
    Компонующий язык DML 273
    Резюме 275
    Упражнения 275
    Упражнение 8.1 275
    Упражнение 8.2 276
    Упражнение 8.3 276
    Упражнение 8.4 276
    Упражнение 8.5 276
    Упражнение 8.6 277
    Упражнение 8.7 277
    Упражнение 8.8 278
    Упражнение 8.9 279

    ГЛАВА 9. ТРАНЗАКЦИИ И ПАРАЛЛЕЛИЗМ

    280
    Транзакции 280
    Блокировки и блокирование 283
    Блокировки 283
    Поиск и обнаружение блокирования 286
    Уровни изоляции 293
    Уровень изоляции READ UNCOMMITTED 294
    Уровень изоляции READ COMMITTED 295
    Уровень изоляции REPEATABLE READ 297
    Уровень изоляции SERIALIZABLE 298
    Уровни изоляции Snapshot 300
    Сводные данные об уровнях изоляции 307
    Взаимоблокировки 308
    Резюме 311
    Упражнения 311
    Упражнение 9.1 311
    Упражнение 9.2 312
    Упражнение 9.3 312
    Упражнение 9.4 312
    Упражнение 9.5 313
    Упражнение 9.6 313
    Упражнение 9.7 314
    Упражнение 9.8 314
    Упражнение 9.9 315
    Упражнение 9.10 316
    Упражнение 9.11 317
    Упражнение 9.12 318
    Упражнение 9.13 319
    Упражнение 9.14 319
    Упражнение 9.15 320
    Упражнение 9.16 320
    Упражнение 9.17 320
    Упражнение 9.18 320
    Упражнение 9.19 321

    ГЛАВА 10. ПРОГРАММИРУЕМЫЕ ОБЪЕКТЫ

    322
    Переменные 322
    Пакеты 325
    Пакет как единица синтаксического анализа 325
    Пакеты и переменные 326
    Инструкции, которые не могут комбинироваться в одном пакете 326
    Пакет как единица разрешения имен 327
    Вариант GO n 328
    Элементы, управляющие выполнением 328
    Управляющий элемент IF ... ELSE 328
    Управляющий элемент WHILE 330
    Пример использования IF и WHILE 332
    Курсоры 332
    Временные таблицы 337
    Локальные временные таблицы 337
    Глобальные временные таблицы 339
    Табличные переменные 340
    Типы Table 341
    Динамический SQL 342
    Команда EXEC 343
    Хранимая процедура sp_executesql 345
    Применение PIVOT с динамическим SQL 348
    Подпрограммы 350
    Функции, определенные пользователем 350
    Хранимые процедуры 352
    Триггеры 354
    Обработка ошибок 358
    Резюме 363
    ПРИЛОЖЕНИЯ 365
    ПРИЛОЖЕНИЕ 1. ПРИСТУПАЯ К РАБОТЕ 367
    Установка SQL Server 367
    Получение SQL Server 367
    Создание учетной записи пользователя 368
    Установка необходимых сопутствующих пакетов программ 369
    Установка механизма управления базы данных, документации и утилит 369
    Загрузка исходного программного кода и установка учебной базы 376
    Работа с SQL Server Management Studio 378
    Работа с SQL Server Books Online 384
    ПРИЛОЖЕНИЕ 2. РЕШЕНИЯ К УПРАЖНЕНИЯМ 388
    ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 412
    XII Оглавление XI Оглавление


    Читать далее
    Категория: , , , , , , , , , , ,
    Просмотров: 986
    Ответов: 1

    Электронная документация по Microsoft SQL Server 2008 (Июль 2009 г.)

    отправлено 24 августа 2009 г. 12:45 участником agladchenko

    В прошлый четверг стало доступно для скачивания очередное обновления электронной документации по Microsoft SQL Server 2008.

    Краткие сведения


    Читать далее
    Категория: , , , , , , ,

    Блог

    Календарь

    «Март 2010 г.»
    ПнВтСрЧтПтСбВс
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    Категории

    Синдикация

    Виртуальные сообщества

    Сообщества сайтов (тэгами)