Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
MS SQL Server - дело тонкое...
Информационный Канал Subscribe.Ru |
#193<< #194 |
СОДЕРЖАНИЕ
Резервное копирование баз данных SQL Server 2000. Порядок создания резервной копии. Создание полной резервной копии файла данных происходит следующим образом:
При создании дифференциальной копии на устройство копируются только изменения в базе, произошедшие с момента
создания последней полной резервной копии, для того, чтобы установить эти изменения используется Differential
Changed Map (DCM). Это битовая карта, каждый бит которой, установленный в 1, говорит о том, что в данном экстенте
были изменения с момента последней полной копии, соответственно при значении 0 – изменений не было. Media set и media family.
При создании резервной копии SQL Server позволяет использовать несколько устройств резервного копирования
одновременно. При этом резервная копия распределяется среди нескольких носителей. Необходимо, чтобы все
устройства относились к одному типу носителей. Например нельзя использовать ленту и диск одновременно для
создания резервной копии.
test.mdf,
backup database [test] todisk='c:\1.bak',disk='d:\2.bak',disk='e:\3.bak' with init Для данного примера:
1.bak - family 1, media 1
т.е. все эти три файла представляют собой один набор носителей (media) и каждый из файлов представляет отдельное
семейство носителей (family).
Заголовок носителя сохраняется, но все имеющиеся на нем резервные наборы перезаписываются. Новый резервный набор помещается в начало носителя. При выборе опции FORMAT происходит перезапись заголовков на каждом носителе, на который записывается резервный набор. Весь набор резервных копий, записанный на этом носителе, становится недоступным. Если резервный набор записывался на несколько носителей, то после перезаписи заголовка на одном из них, резервный набор также становится недоступным.
Системные таблицы Вся хронология создания резервных копий хранится в базе данных msdb, в следующих таблицах:
backupfile
Содержит по одной строке для каждого файла данных и файла журнала транзакций.
Теперь рассмотрим поля таблицы и их значения.
Содержит по ожной строке для каждого файла резервного набора.
Содержит по одной строке для каждого семейства носителей.
Содержит по одной строке для каждого набора носителей.
Для того чтобы удалить историю бэкапов до определенной даты, существует хранимая процедура sp_delete_backuphistory из базы данных msdb, имеющая один входной параметр, определяющий дату, до которой вся история будет удалена. Пример вызова: exec msdb..sp_delete_backuphistory '4-mar-2004 13:00:00'
удалит всю хронологию резервных копий, сделанных до 13:00:00 4 марта. Получаем текст процедуры sp_delete_backuphistory следующим образом: sp_helptext 'sp_delete_backuphistory' Затем нетрудно догадаться как нужно изменить текст, чтобы его можно было использовать для получения нужного результата. Оптимизация выполнения операции резервного копирования
Все файлы, выбранные для операции резервного копирования, ассоциированы с дисковыми устройствами, список которых
можно посмотреть следующим образом: Select filename from sysfiles в текущей базе данных, с каждым дисковым
устройством связывается свой процесс чтения, и для каждого устройства резервного копирования порождается свой
процесс записи. При увеличении количества логических файлов для базы данных, увеличивается количество операций
параллельного чтения, а при увеличении числа устройств резервного копирования, соответственно увеличивается
количество операций параллельной записи.
Распределенные секционированные представления MS SQL Server. Часть 2
По материалам статьи Don Schlichting:
MS SQL Server Distributed Partitioned Views Part 2 Во второй статье рассматривается использование распределенных секционированных представлений для операций вставки, обновления и удаления. В 1 части был произведен обзор основ распределенных секционированных представлений, объединенных баз данных, и горизонтального секционирования. В качестве примеров были созданы связанный сервер, секционированная таблица и представление, использующее оператор UNION. Во второй части будет показан новый пример, демонстрирующий выражения DML (INSERT, UPDATE и DELETE).
Мы начнем с создания тестовой среды. Примеры будут создаваться на основе двух машин, на каждой из которых установлен
SQL 2000 под Windows 2000. Хотя в наших примерах будут только две машины, те же самые правила подходят для трех
и более.
В результате должны быть возвращены все записи таблицы Authors. Установите соединение со вторым сервером Server2 как sa и выполните следующий код:
Объяснение вышележащего кода см. в 1 части.
После создания связанных серверов следующим шагом является создание тестовых таблиц. Представьте таблицу заказов,
содержащую гигабайты истории продаж и снижающуюся производительность работы с этой таблицей. Мы разделим эту
большую таблицу на две части. Первый сервер Server1 будет хранить продажи с порядковыми номерами меньше 1 000.
Заказы с порядковыми номерами больше 1 000 будут храниться на втором сервере Server2.
На втором сервере Server2 код практически тот же. Меняются только название и ограничение:
Необходимо отметить несколько пунктов. Во-первых, требуется ограничение CHECK. Оптимизатор запросов использует
это ограничение, чтобы определить, на каком сервере расположены данные. Ограничение CHECK должно позволять данным
храниться на одном, и только одном сервере.
Следующее представление является простой выборкой данных с двух серверов в один результирующий набор. На первом сервере Server1 создайте представление со следующим кодом:
На втором сервере Server2 код снова практически тот же:
Существует несколько правил для представлений DML. Чтобы представление было обновляемым, должны возвращаться
все столбцы, включенные в первичный ключ. На всех столбцах, не включенных в представление, должны быть разрешены
значения NULL.
В результате должен быть возвращен пустой результирующий набор. Перед тем, как начать выполнение выражений DML, еще остается пара вопросов, требующих рассмотрения. Координатор распределенных транзакций
Перед выполнением примеров требуется запустить координатор распределенных транзакций (DTC). DTC управляет
выполнением транзакций, когда задействованы несколько различных источников данных. Для Windows 2000 требуется
service pack 1.
Хотя это не является обязательным требованием, но установка опции спящего режима проверки схемы (lazy schema validation) повышает производительность запросов. Проверка схемы - это проверка удаленной схемы на то, что ее метаданные верны. При установке этой проверки в спящий режим SQL не проверяет верность удаленных метаданных относительно нашего запроса до его выполнения. Если произошло изменение удаленной схемы, то наш запрос вернет ошибку. В нашем случае мы знаем, что удаленная таблица верна и имеет ту же структуру, что и наша локальная таблица. Не проверяя удаленную схему, мы получим повышение производительности.
Если мы дадим SQL информацию, что сортировка и набор символов одинаковы у локального и удаленного серверов, то удаленный сервер сможет принимать участие в сравнениях. В противном случае все данные сначала будут приходить на локальный сервер. Все сравнения в этом случае будут делаться локально, снижая производительность. Этого можно избежать, включив опцию совместимого сопоставления (collation compatible). Эта опция также не является обязательным требованием, а используется для оптимизации.
Начнем со вставки данных в новую пустую таблицу. Следующий код выполнит вставку одной записи:
Сама вставка - это операция, которую Transact-SQL выполняет регулярно. Опция XACT_ABORT требуется выражений,
которые модифицируют данные. Когда опция установлена, любая ошибка времени исполнения приводит к откату всей
транзакции.
Удаление записей включает те же шаги:
Недавно добавленная запись удалена. Отметим, что выражению WHERE не требуется ссылаться на наш первичный ключ или столбец с ограничением CHECK.
Представление может обращаться к связанной таблице по имени, состоящем из четырех частей (как это сделано в
нашем примере), при использовании функции OPENROWSET или функции OPENDATASOURCE. Объединенные базы данных наряду с распределенными секционированными представлениями могут повысить производительность на очень больших таблицах. Для этого требуются тщательность и планирование, особенно для операций DML. Но повышение производительности стоит усилий по дополнительному администрированию. Статьи на русском языке
Работа с данными в ADO.NET-I
Building Joins the Easy Way Оптимизация баз данных: принципы, практика, решение проблем
Анализ данных. Генератор отчетов Crystal Reports
|
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||