Отправляет email-рассылки с помощью сервиса Sendsay

MS SQL Server

  Все выпуски  

MS SQL Server - дело тонкое...


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

#056<<  #057

СОВЕТ

Особенности не регистрируемых и минимально регистрируемых операций при резервировании и восстановлении transaction log
По материалам статьи Microsoft: "Effects of Nonlogged and Minimally Logged Operations on Transaction Log Backup and Restore Process"
Информация в этой статье относится к Microsoft SQL Server 7.0/2000

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

SQL Server 7.0

В зависимости от типа не регистрируемой операции, SQL Server 7.0 может вести себя тремя различными способами при попытке исполнить резервное копирование transaction log после таких операций:

Сценарий 1:
Происходит сбой с сообщением об ошибке:

Server: Msg 4213, Level 16, State 1, Line 1

Cannot allow BACKUP LOG because file 'dbname' has been subjected to nonlogged updates and cannot be rolled forward. Perform a full database, or differential database, backup.
(BACKUP LOG не может быть исполнен потому, что файл 'dbname' был подвергнут не регистрируемым модификациям, что делает откат невозможным. Нужно выполнить полное или разностное резервное копирование.)

-and-
Server: Msg 3013, Level 16, State 1, Line 1

Backup or restore operation terminating abnormally. (Резервное копирование или операция восстановления, закончились неверно).

Незарегистрированные операции, которые ведут к этим ошибкам могут быть следующие:
- Nonlogged bcp
- SELECT INTO
- WRITETEXT
- UPDATETEXT
- Data Transformation Services (DTS) с Use Fast Load и включенным Table Lock.

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

Сценарий 2:

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

There is no current database backup. This log backup cannot be used to roll forward a preceding database backup. (Не найдены приемлемые резервные копии базы данных. Эта резервная копия записей журнала не может использоваться для отката совместно с предшествующими резервными копиями базы данных).
Вот перечень операций, которые приводят к такому сценарию:

- BACKUP LOG WITH TRUNCATE_ONLY
- sp_dboption "trunc. log on chkpt", установлено в TRUE. Для отмены, используйте sp_dboption "trunc. log on chkpt", установленное в FALSE.

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

Server: Msg 4305, Level 16, State 1, Line 1

This backup set cannot be restored because the database has not been rolled forward far enough. You must first restore all earlier logs before restoring this log. (Этот резервный набор не может быть восстановлен, потому что база данных не была прокручена вперед достаточно далеко. Вы сначала должны восстановить все более ранние файлы регистрации транзакций перед восстановлением этого файла регистрации транзакций).

-and-
Server: Msg 3013, Level 16, State 1, Line 1

Backup or restore operation terminating abnormally. (Резервное копирование или операция восстановления, закончилась неправильно)

Это поведение полностью соответствует дизайну СУБД. Пользователь, который выполняет любую из предшествующих операций, должен быть уверен в природе операции и последствиях её исполнения. Полное или разностное резервное копирование базы данных должно быть выполнено после запуска любой из указанных выше операций.

Сценарий 3:

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

SQL Server 2000

В полной recovery model, регистрируется каждое изменение в базе данных. Так, ни в одном из представленных выше сценариев ошибок не произойдёт.
В простой recovery model, любая попытка резервирования transaction log всегда будет терпеть неудачу со следующими сообщениями об ошибках:

Server: Msg 4208, Level 16, State 1, Line 1

The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE. (инструкция BACKUP LOG не допустима, в то время когда установлена простая recovery model. Используйте BACKUP DATABASE, или измените recovery model, используя ALTER DATABASE).

-and-
Server: Msg 3013, Level 16, State 1, Line 1

BACKUP LOG is terminating abnormally. (BACKUP LOG закончился неправильно)

В Bulk-logged модели, минимальная регистрация может быть выполнена для следующих операций, чтобы сэкономить место в transaction log:
- Оптовые операции загрузки, включая bcp и BULK INSERT.
- CREATE INDEX, включая индексированные представления.
- SELECT INTO
- WRITETEXT
- UPDATETEXT
- DTS с Use Fast Load и включенным Table Lock.

Основное отличие от SQL Server 7.0 в том, что в SQL Server 2000 фактически transaction log можно резервировать после таких, минимально регистрируемых операций. Резервное копирование журналов не только резервирует журнал, но и резервирует экстенты, распределённые предшествующими операциям. Поэтому, такие резервные копии могут использоваться для более позднего восстановления. Однако, Bulk-Logged recovery model позволяет восстанавливать базу данных только до того участка резервной копии transaction log, когда начнутся записи, относящиеся к оптовым изменениям. Восстановление на заданный момент времени (Point-in-time) не поддерживается. Кроме того, резервируя журнал, который содержит Bulk-Logged операции, требуется доступ ко всем файлам данных в базе. Если файлы данных не доступен, окончание transaction log не может быть резервировано, и все завершённые операции в этом журнале будут потеряны.
В SQL Server 2000 опция truncate log on checkpoint существует только для обратной совместимости. Микрософт рекомендует использовать простую recovery model вместо этой опции. Если Вы изменяете recovery model от полной или Bulk-logged к простой и затем переключаетесь обратно, последующие резервные копии transaction log будут возвращать те же самые предупреждающие сообщения, как это описано в сценарии 2 для SQL Server 7.0, и позволит исполнить резервное копирование журнала после такого сообщения.

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

Server: Msg 4305, Level 16, State 1, Line 1

The log in this backup set begins at LSN LSNnumber, which is too late to apply to the database. An earlier log backup that includes LSN LSNnumber can be restored. (Журнал этого резервного набора начинается в LSN "LSNnumber", который предполагает слишком позднее обращение к базе данных. Более ранние записи резервного копирования, которые включают LSN "LSNnumber" могут быть восстановлены)

-and-
Server: Msg 3013, Level 16, State 1, Line 1

RESTORE LOG is terminating abnormally.

Сценарий 3, описанный для SQL Server 7.0 также относится и к SQL Server 2000.

ГОТОВИМСЯ К ТЕСТУ ПО 70-028

ШПАРГАЛКА #10 Продолжение (обзор официального курса Microsoft)
Архив шпаргалок Вы найдёте на следующих сайтах:
http://www.sql.ru/subscribe/
http://subscribe.ru/archive/comp.soft.winsoft.sqlhelpyouself

Репликация слиянием

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

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

Продолжение следует.

ПОЛЕЗНОСТИ

Физическая структура данных в SQL Server 7.0
Автор: Татьяна Крамарская.
В предлагаемой статье рассматриваются способы получения информации о физической структуре базы данных, отражение этой структуры в служебных таблицах и динамика работы SQL Server 7.0 с экстентами... [подробнее]

С 1 января 2001 года в издательстве "Русская редакция" начал выходить журнал для профессиональных программистов "SQL для профессионалов". Журнал не перенасыщен рекламой и рассказывает о конкретных методах решения сложных задач. Подписавшись на журнал, можно собрать хорошую базу знаний. Журнал содержит также фрагменты программного кода. Более обширные фрагменты кода можно бесплатно скачать с Web-сайта журнала http://newsletter.narod.ru/
Там же можно почитать аннотации к статьям, опубликованных в журнале.

Список статей, опубликованный в майском номере журнала "SQL для профессионалов" за 2001 год.

1. И у меня есть .Net! Майкл Оути (Michael Otey)
Не зря говорят: «Подражание — вернейший признак лести». Еще на слуху нападки Oracle и Sun Microsystems на новую платформу Microsoft — .NET Framework — а обе эти компании уже представили свои собственные платформы, построенные по тому же образцу.

2. Оптимизация SQL-сервера для полнотекстового поиска. Тони Бэйн (Tony Bain)
Полнотекстовая индексация — прекрасная функция, которая позволяет решить старую проблему — поиск в текстовых полях баз данных SQL Server по заданному слову или фразе.

3. Анализ качества обслуживания пользователей. Рэнди Рейтер (Randy Reiter)
Это интересная статья, написанная президентом компании SQL Power Tools, которая производит инструментальные средства для SQL Server (и других баз данных), позволяющие оценить качество обслуживания конечных пользователей БД.

4. Эффективное применение транзакций. Барри Фридли (Barry Fridley)
Применение транзакций позволяет создавать надежные и безопасные приложения для SQL-сервера

5. Портирование журнала в SQL Server 7.0. Рон Толмэйдж (Ron Talmage)
Портирование журнала — надежное и экономичное средство для достижения высокой отказоустойчивости

6. Настройка параметров SQL Server 2000. Брайан Найт (Brian Knight)
Как гарантировать работоспособность ваших систем

Информацию о том, где можно приобрести журнал смотрите на:
http://www.sky.ru/~dgalkov/FOXTALK/wherebuy.htm

Новые технические статьи Microsoft

Q273813 - FIX: "Incorrect Syntax near the Keyword 'by' " Error Message with Column Names of "C", "CA" or "CAS"
Q279526 - FIX: SQL Server ODBC Driver Ignores Authentication Setting
Q299285 - FIX: Query with Complex Correlated Subquery May Cause Unexpected Results in Aggregate Functions
Q192710 - INF: Basic Guidelines for Installing SQL Server Version 6.5 or 7.0
Q239759 - PRB: Error 5177 May Be Raised When Creating Databases
Q241147 - PRB: SQL Server ODBC Driver Returns Output Parameter as a Result Set in a Plain SQL Statement
Q282455 - FIX: SQL Server Fails to Start When Computer Binds 48 or More Socket Addresses
Q281633 - FIX: SQLOLEDB Provider Incorrectly Leaves Transaction Open
Q285006 - FIX: XML Parsing Error 6603 or Truncated Text Data with OPENXML
Q290646 - FIX: SQLColAttribute Returns Incorrect Table Attributes When Table Name Contains a Period
Q296849 - BULK INSERT Replaces Current Datetime Column Value with Previous Column Value if Data File Contains All Spaces
Q298402 - INF: Understanding How to Set the SQL Server I/O Affinity Option
Q297271 - FIX: Point in Time Recovery May Recover Database if the Transaction Log That is Applied Does Not Contain Any Transactions
Q300538 - INF: List of Bugs Fixed in SQL Server 2000 Service Pack 1 (2 of 2)
Q299717 - FIX: Query Method Used to Access Data May Allow Rights that the Login Might Not Normally Have
Q303324 - BUG: SQL Server 2000 Service Pack 1 Breaks Visual Basic T-SQL Debugger
Q302477 - FIX: Cursor Created on Linked Server That Requests Meta-Data May Cause Handled Access Violation
Q301642 - FIX: SQL Server Error Message 6002 Is Returned with an Incorrect Severity
Q302825 - FIX: Complex Join Query with Views and Redundant Tables May Cause Error 8623
Q286303 - INF: Behavior of SQL Server 2000 Network Library During Dynamic Port Detection
Q298794 - PRB: Population or Query of a Full Text Catalog May Stop Responding
Q278656 - PRB: Like Predicate Optimization is Limited to 7 Character Positions
Q300494 - FIX: Profiler Can Only Capture 1 GB File Size for SQL Server Activities
Q299914 - FIX: Executing MAX or MIN Aggregate Functions on Column with Hypothetical Clustered Index May Result in CPU SPIN
Q303344 - FIX: Exception Access Violation Encountered in CONSTANT::CONSTANT
Q303287 - BUG: DTC Transactions May Fail When SQL Server Is Running in Lightweight Pooling Mode
SQL Server 6.5 Service Packs
SQL Server 2000 Service Packs
SQL Server 7.0 Service Packs
Microsoft SQL Server 7.0 Conversion Guide
Microsoft SQL Server 2000 User-Defined Functions
Q247931 - INF: Authentication Methods for Connections to SQL Server in Active Server Pages
Q252987 - INF: Execute a SQL Server DTS Package from Active Server Pages
Q257921 - PRB: OLAP Services Fail to Start After Windows NT Computer is Renamed
Q272446 - INF: Profiler Restricts the Maximum Size Per Trace File to 1 GB
Q282017 - PRB: SQL Server 2000 Help File Contains Confusing Information About the Desktop Engine Setup
Q287606 - FIX: Enterprise Manager Reports Table Sizes That Are Inconsistent as Compared to sp_spaceused
Q289742 - INF: How to Create a SQL Server 7.0 Trace
Q290212 - INF: List of Bugs Fixed in SQL Server 2000 Service Pack 1 (1 of 2)
Q290369 - FIX: Updates to New Column Added to Merge Publication Article Are Not Replicated
Installation and Customization of Microsoft Project Central
Office 2000 Developer Service Packs and Service Releases
Office 2000 Developer Service Releases

ФОРУМ SQL.RU: САМЫЕ ПОПУЛЯРНЫЕ ТОПИКИ НЕДЕЛИ

По поводу "А как же тогда" собственно по теме
SQL Server user group in Russia
Вопрос по TRIGGER FOR UPDATE
Значение переменной по её имени ?
Помогите профану!!!
Разводка ключевых полей между удаленными базами (очень интересная тема)
Как создать CDROM с куском базы?
Работа с данными через Интернет
Получение MIN от выражения
Чем принципиально отличается ...
Как мне определить, существует ли временная таблица в данный момент?
Как можно в Одно long field Брать Въражения с Побитовами операцъями
LEFT JOIN с дополнительными условиями
Помогите профану!!! часть 2
Подкачка данных

ФОРУМ SQL.RU: ВОПРОСЫ ОСТАЛИСЬ БЕЗ ОТВЕТА

процедуры ненутрят.
Нет ли в природе уже готовой таблицы с русскими сообщениями об ошибках MSSQL7-2K
Ошибка 80040e07
Постраничный вывод из MSSQL server через JDBC в HTML
DateBase Diagram

Информация автора рассылки:
В связи с окончанием очередного, долгосрочного проекта, я вступаю в активную фазу поиска новой работы. В ближайшие несколько лет, мне было бы удобно работать в Москве или её окрестностях (речь идёт о новом, не коммерческом проекте, детали которого скоро будут представлены на Ваш суд). В виду вышеизложенных причин, предлагаю Вам свои услуги, как DBA. Если Вас это заинтересовало, присылайте, пожалуйста свои предложения по этому адресу: mssqlhelp@pisem.net

#056<<  #057


Вопросы, предложения, коментарии, замечания, критику и т.п. присылайте Александру на адрес: MSSQLHelp@pisem.net

sql.ru

Описание рассылки
 Поиск на SQL.RU
Искать: 
Результатов на странице: Формат:
Тип запроса: Раздел:
МИНИФОРМА
ПОДПИСКИ




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное