Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
MS SQL Server - дело тонкое...
#042<<#043
СОВЕТ
Как усекается журнал транзакций SQL Server 7.0
По материалам статьи из Microsoft Knowledge Base
Есть несколько причин, из–за которых журнал транзакций не усекается при
использовании DBCC SHRINKFILE или DBCC SHRINKDATABASE. В Books Online DBCC
SHRINKFILE и DBCC SHRINKDATABASE описаны достаточно хорошо, но слишком кратко.
В Микрософте SQL Server 7.0, команды SHRINKFILE и SHRINKDATABASE устанавливают
желаемый размер, до которого необходимо усекать журнал. Эти команды могут быть
применены для каждого журнала, но это, фактически, только заявка, которую
сервер попытается выполнить. Поэтому, после выполнения команды SHRINKFILE или
SHRINKDATABASE, Вам придётся дополнительно выполнить команду, которая усекает
журнал и у Вас есть шанс, что это произойдёт.
Вы не можете уменьшить журнал транзакций до размера меньше установленного
критериями, которые представлены ниже:
- Чтобы усечь журнал транзакций до размера меньшее первоначального, Вы должны
уменьшить соответствующие файлы с помощью DBCC SHRINKFILE. Вы не можете
использовать DBCC SHRINKDATABASE, чтобы усечь журнал транзакций до размера
меньшего его оригинала или явно заданного размера. Первоначальный размер
определяется, как размер файла журнала в команде CREATE DATABASE плюс любые
использованные после этого команды ALTER DATABASE. Первоначальный размер
определяется без учёта автоматического роста файла журнала.
- Физический размер журнала никогда не может быть меньше используемой сервером в
момент усечения его части. Вы можете использовать команду DBCC SQLPERF
(LOGSPACE), чтобы увидеть количество используемого в журнале места.
- Минимально возможный размер журнала транзакций для любой базы данных сервера,
это текущий размер журнала базы данных model. По умолчанию, журнал транзакций
базы данных model меньше одного мегабайта.
- Поскольку журнал транзакций может быть сокращен только до границы виртуального
журнала virtual log file (VLF), не возможно сократить журнал к размеру меньше
чем VLF, даже если это место реально не используется. Аналогично, если часть
VLF используется, Вы не можете сократить занимаемое этим VLF место. Для
получения дополнительной информации, см. разделы «Virtual Log Files» и
«Transaction Log Physical Architecture» в Books Online.
Журнал транзакций, это wrap-around (с запашком) журнал. Это означает, что в любое время могут существовать свободные (free) или многократно используемые (reusable) VLF, которые могут находиться в начале, в середине, и/или в конце журнала транзакций. Сократить можно только свободное место в конце журнала транзакций, а не всё свободное пространство журнала. Также, Вы можете сократить только целые VLF. Сокращаемые в конце журнала VLF должны быть неактивны. Для более детальной информации обратитесь к разделу Truncating the Transaction Log в Books Online.
Обратите внимание на следующее:
- Всегда резервируйте системные и пользовательские базы данных до и после того, как Вы вносите изменения,
затрагивающие систему. DBCC SHRINKFILE и DBCC SHRINKDATABASE - не
регистрируемые операции, и исполнение их нарушает последовательность
отписывания транзакций из журнала в резервную копию. После выполнения этих
команд, Вы должны будете сделать полное резервное копирование базы данных.
- Удостоверитесь, что не запланировано создание никаких резервных копий на время,
когда будет выполняться усечение журнала транзакций.
- Удостоверитесь, что отсутствуют старые, долго выполняющиеся или не копируемые
транзакции. Чтобы сделать это, используйте:
DBCC OPENTRAN (database_name)
- Выполните DBCC SHRINKFILE или DBCC SHRINKDATABASE, чтобы определить возможную границу усечения (shrinkpoint). DBCC SHRINKFILE и DBCC SHRINKDATABASE, по умолчанию, разрешены членам серверной роли sysadmin или роли базы данных db_owner. Для информации о различиях между этими командами, обратитесь к Books Online (обратите внимание на отличие в параметрах):
DBCC SHRINKFILE (file_name, target_size)
DBCC SHRINKDATABASE (database_name, target_percent)
- Создайте несколько фиктивных транзакции, чтобы имитировать журналирование транзакций и затем, выполните команду BACKUP, чтобы осуществить усечение журнала транзакций. Инструкция BACKUP фактически попытается усечь журнал транзакций к заданному целевому размеру (target_size или target_percent).
Ниже следует пример того, как сгенерировать фиктивные транзакции для одного журнала с последующим усечением:
SSET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
-- *** MAKE SURE TO CHANGE THE NEXT 3 LINES WITH YOUR CRITERIA. ***
USE Your_Database_Name -- This is the name of the database for which the log will be shrunk.
SELECT @LogicalFileName = 'Your_log' -- Use sp_helpfile to identify the logical file name that you want to shrink.
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 100 -- in MB
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size -- in 8K pages
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
-- Wrap log and truncate it.
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
-- Try an initial shrink.
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) -- the log has not shrunk
AND (@OriginalSize * 8 /1024) > @NewSize -- The value passed in for new size is smaller than the current size.
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log') -- Because it is a char field it inserts 8000 bytes.
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END -- update
EXEC (@TruncLog) -- See if a trunc of the log shrinks it.
END -- outer loop
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
PRINT '*** Perform a full database backup ***'
SET NOCOUNT OFF
- Проверьте, изменился ли первоначальный размер журнала транзакций.
- Повторите все вышеописанные шаги в случае необходимости. Если журнал транзакций
не сжимается, убедитесь, что выполнены все условия и ограничения, изложенные в
начале статьи.
После того, когда журнал транзакций усечён:
1. Выполните полное резервное копирование базы данных master.
2. Выполните полное резервное копирование пользовательской базы данных. Это
необходимо, потому что команда SHRINK не регистрируется в журнале и нарушается
порядок отписывания транзакций.
Чтобы определить причины роста журнала транзакций, Вы можете проанализировать открытые транзакции, долго выполняющиеся транзакции, не копируемые транзакции или транзакции, которые затрагивают большое количество данных.
Дополнительная информация в Microsoft Knowledge Base:
Q110139 INF: Causes of SQL Transaction Log Filling Up
http://support.microsoft.com/support/kb/articles/Q110/1/39.ASP
Q62866 INFO: Reasons Why SQL Transaction Log Is Not Being Truncated
http://support.microsoft.com/support/kb/articles/Q62/8/66.ASP
Q66057 PRB: PRB: Running Out of Log Space When Running Large Bulk Loads
http://support.microsoft.com/support/kb/articles/Q66/0/57.ASP
Q80629 PRB: Transaction Log Partially Truncated
http://support.microsoft.com/support/kb/articles/Q80/6/29.ASP
Разделы Books Online: Transaction Log Physical Architecture; Optimizing Transaction Log Performance.
ГОТОВИМСЯ К ТЕСТУ ПО 70-028
ШПАРГАЛКА #8 Продолжение (обзор официального курса Microsoft)
Архив шпаргалок Вы найдёте на следующих сайтах:
http://www.sql.ru/subscribe/
http://subscribe.ru/archive/comp.soft.winsoft.sqlhelpyouself
DTS пакет изнутри
Каждый DTS пакет может нести в себе одно или
несколько заданий (не путать с серверными заданиями). Каждое такое задание
является составной частью процесса трансформации осуществляемого пакетом.
Допустимо пять типов заданий, смешивание которых в рамках одного задания не
допускается. Первый тип позволяет выполнять набор операторов T-SQL, для чего
существуют три специализированных объекта. За выполнение операторов T-SQL несёт
ответственность объект Execute SQL Task. Операции массовой загрузки/выгрузки
данных берёт на себя объект Bulk Insert Task. При необходимости исполнения
запроса, управляемого данными и во всех других, не предусмотренных предыдущими
двумя объектами случаях, используется объект Data-Driven Query Task. Второй тип
заданий позволяет реализовать практически любую необходимую процедурную логику
за счёт того, что предназначен для выполнения сценариев ActiveX, VBScript,
JScript и PerlScript. Причём, при использовании ActiveX, у Вас появляются и все
те замечательные возможности, которые предоставляют объекты ADO (ActiveX Data
Objects) и интерфейс OLE Automation. С помощью третьего типа заданий Вы сможете
заставить DTS пакет запускать внешние программы и процессы, а также отправлять
сообщения электронной почты. Эти возможность обеспечивают два специальных
объекта: Execute Process Task и Send Mail Task. Первый из этих объектов имеет
наиболее широкую область применения, которая включает также и возможность
отправки почтовых сообщений. Четвёртый тип заданий обеспечивает перемещение
данных между источником и местом назначения. Пятый тип позволяет выполнить
другой DTS пакет или воспользоваться его результатами.
Выполнение заданий DTS пакета не обязательно должно
быть последовательным и безусловным. В службах DTS реализована достаточно
богатая и удобная логика исполнения заданий пакета. Задания могут выполняться
параллельно или последовательно, а также возможны комбинации в рамках одного пакета
обоих вариантов. Такой подход позволяет чётко задать последовательность
выполнения заданий и оптимизировать их выполнение. Для тех же случаев, когда
задания имеют разную степень ответственности и важности, Вам пригодится
возможность установки каждому заданию одного из трёх уровней приоритетов их
исполнения (высокий, средний и обычный). Это позволит избежать возможных
коллизий. В тех случаях, когда последовательность заданий пакета зависит от
успешности исполнения конкретного задания, Вы можете наложить условия на запуск
любого пакета. Вам доступны элементы простой логики, с помощью которой можно
разрешить запуск задания в случае успешного (on success) исполнения
предыдущего, или наоборот, запустить определённое задание, если предыдущее
завершилось с ошибкой (on failure). Если результат исполнения задания не важен,
возможен автоматический (безусловный) запуск следующих заданий (on completion).
При формировании DTS пакета с помощью DTS Designer, возможно применить
транзакционный механизм для нескольких заданий, объединяя их в транзакционные
модули. В таком случае, при не успешном выполнении хотя бы одного задания входящего в пакет транзакционного модуля,
произойдёт откат всех изменений, которые были осуществлены в других заданиях
этого модуля. В зависимости от того, произошёл ли откат в таком модуле или всё
прошло нормально, можно запускать разные задания. Для того, что бы
использование транзакционного механизма в рамках пакета было возможным,
необходимо, что бы Ваш поставщик данных также поддерживал транзакции. Имеется и
ограничение на применение транзакций в DTS пакете: единовременно DTS Designer
допускает выполнение только одной транзакции в пакете. Т.е. становится
невозможным параллельное выполнение двух транзакционных модулей одного пакета.
Их нужно располагать последовательно, причём следующий модуль может быть
запущен только после полного выполнения предыдущего или после завершения отката
предыдущей транзакции.
Каждый DTS пакет после сохранения является
самостоятельным объектом, запустить на исполнение который можно из Enterprise
Manager или программой dtsrun. Программа dtsrun может запускаться с несколькими
ключами, наиболее ходовыми из которых являются: /s после которого без пробела
указывается имя сервера; /u за которым следует имя пользователя; /n за которым
следует имя пакета. Этого, как правило, достаточно, т.к. полное описание всех
действий находится внутри самого пакета. Поскольку dtsrun является обыкновенной
программой, вы можете запланировать её периодическое или однократное выполнение
с помощью механизма заданий MS SQL сервера. Также, планирование расписание
исполнения DTS пакетов возможно с помощью средств DTS Import/Export Wizard.
Особенности DTS пакетов, хранящихся в Repository
Сохранение DTS пакетов в хранилище данных Microsoft
Repository, позволяет кроме хранения нескольких версий самого пакета сохранять
его метаданные, которые позволяют отслеживать происхождение данных DTS пакета
до уровня строк, выдавать информацию об источнике каждой порции данных,
показывать историю преобразования данных, выводить журнал аудита трансформации
данных и сохранять аудит исполнения DTS пакетов в этом хранилище. Возможно
также использование метаданных пакета, хранящихся в репозитории, в приложениях
третьих фирм. Сведения о происхождении пакетов хранятся в виде объектов
связанных с одной из его версий. Таким образом, для каждой версии пакета Вы
можете определить время, имя пользователя и имя компьютера, причастных к
исполнению пакета.
Для отслеживания происхождения данных составляют план
использования метаданных, который может изменятся в зависимости от
необходимости аудиторского контроля,
изменения объёма метаданных и от требований к производительности. Для
размещения в хранилище информации о происхождении данных создаются специальные
табличные поля. Кроме того, каждый пакет наделяется службой DTS двумя
идентификаторами: коротким (целое число), который задаёт номер версии пакета и
длинным Globally Unique Identifier (GUID), являющийся уникальным, глобальным
идентификатором. Установить параметры отслеживания происхождения данных можно с
помощью DTS Designer, в котором Вам также потребуется отобразить поля источника
сведений о происхождении в результирующие поля репозитория.
Вопросы для повторения
ВОПРОС
Вы хотите создать пакет DTS, который извлекает данные
при помощи элементарного запроса. Какое средство лучше всего подходит для
этого?
ОТВЕТ
Для создания простых схем преобразований пользуйтесь
услугами мастеров импорта и экспорта служб DTS.
ВОПРОС
Вам нужны гарантии безопасности пакета DTS
(программы): никто не должен ее копировать или просматривать секретную
информацию. Что можно сделать для защиты данного пакета DTS?
ОТВЕТ
Можно назначить пакету пароль во время его создания,
чтобы никто не мог просматривать или изменять пакет. Впрочем, это не помешает
любому желающему выполнить пакет.
ВОПРОС
Вы пользуетесь сервером SQL Server и собираетесь
переходить на новое оборудование. Оно будет работать быстрее. Каким средством
лучше воспользоваться для перевода базы данных и всех ее объектов на новое
оборудование?
ОТВЕТ
Лучше использовать задачу DTS Object Transfer,
поскольку она позволяет передать на новое оборудование все данные и объекты
одной операцией.
Конец шпаргалки #8
Продолжение следует.
ПОЛЕЗНОСТИ
Статья Татьяны Крамарской «Администрирование SQL Server 2000 и расширенные свойства объектов». Эта небольшая заметка
предназначена для администраторов SQL Server 2000. Здесь приводится ряд
примеров практического использования лишь одной из многочисленных возможностей
SQL Server 2000, связанной с расширенными свойствами объектов. Подобные примеры
помогают понять, как применяются заявленные в документации функции, а также
убедиться в том, что новые возможности облегчают решение старых задач
администрирования.
http://www.infocity.kiev.ua/db/content/db033.phtml
Статья Франклина Р. Смит, Журнал Windows 2000 Magazine «Анализируем журнал безопасности Windows NT».
Журнал безопасности Security Log может использоваться для отслеживания (аудита)
большинства действий пользователей в системе. Существует три основные категории
такого аудита - это аудит сеансов работы пользователей, аудит доступа к
объектам системы и аудит выполняющихся задач. Эти категории дают основную
информацию при наблюдении за действиями пользователей.
http://www.infocity.kiev.ua/os/content/os082.phtml
Статья Вячеслава Сартина «SQL - Язык запросов» рассказывает, что SQL - это язык предназначенный для
модификации и управления реляционными базами данных, а так же для создания
запросов. С его помощью можно сделать выборку, сортировку и фильтрацию данных.
Кроме того, операторы SQL позволяют добавлять, изменять и удалять записи из
базы данных…
http://www.vbstep.ru/articles/db/lsql/index.html
Новые технические статьи Microsoft
Q112610 - PRB: SQL Performance Counters Missing in Windows NT Performance Monitor
Q122352 - INF: Supported Windows Versions for SQL Server
Q196909 - INF: How to Increase the Number of SQL Server Error Logs
Q259466 - BUG: SELECT Statement with a Correlated Subquery on a View with a Substring Causes an Access Violation on a Multi-Proc Computer
Q278500 - HOWTO: Specify an XSL File to Transform the XML Stream from a Query with SQL Server 2000
Q280352 - HOWTO: Install SQL Server CE from the Command Line and Generate a Log File
Q282416 - FIX: Opening the Database Folder in SQL Server Enterprise Manager 2000 Takes a Long Time
Q281769 - FIX: Exception Access Violation Encountered During Query Normalization
Q289683 - INF: NoRemapPipes Error Message Occurs in System Log when You Use SQL Server 2000 on a Windows 2000 Cluster
Q293195 - FIX: Use of the Colon Operator to Define a Range of Members May Cause Incorrect Results in MDX Query
Q291683 - FIX: xp_sqlagent_param Problems with Windows Authentication
Q293758 - FIX: Nullability Changes not Handled by SQL Server with Linked Server Queries to DB2
Q294976 - FIX: SQL Profiler Causes Handled Access Violation in SQL Server While Tracing Large Data
Q280872 - FIX: SQL Server 7.0 Microsoft Search Fails to Start and Error Message 1332 Occurs
Q294860 - FIX: Modification Queries May Take Too Long to Compile if Halloween Protection is Required for Multiple Tables
Q279490 - BUG: Analysis Services 2000 Does Not Support Security Account Delegation
Q288054 - SAMPLE: RLockMFC.exe Demonstrates Row-Level Locking Using MFC and SQL Server
Q281200 - BUG: Execute Statement Behaves Incorrectly with Set Identity Insert On
Q230590 - INF: How to Archive More Than Six SQL Server Errorlogs
Q257716 - INF: Frequently Asked Questions - SQL Server 2000 - Setup
Q274797 - INF: SQL Server 7.0 Service Pack 3 Fixlist
Q281117 - BUG: Timeout Error Occurs with Large Dimensions in Dimension Editor or Wizard
Q293815 - INF: Dimension Rules for Security Role Not Saved When Programmatically Set
НОВОСТИ ПРОЕКТА SQL.RU
Изменён дизайн главной страницы сайта, которая содержит теперь несколько разноплановых новостных блоков.
http://www.sql.ru/
Ждём Ваших замечаний и предложений.
В порядке эксперимента, хотим предложить Вашему
вниманию некоторые темы (топики) из форума MS SQL Server сайта SQL.RU, которые
возможно могут Вас заинтересовать. Для пробы, представляем Вам три новых раздела,
первый из которых представляет некий TOP-лист самых дискутируемых вопросов,
размещённых в форуме за последнюю неделю. Второй раздел содержит вопросы,
которые до сих пор ждут ответа. Третий раздел содержит топики, которые
поднимают достаточно интересные вопросы, но консенсуса между дискутирующими
достигнуто не было.
Поскольку раздел новый, мы надеемся на Ваши
комментарии по поводу его востребованности, а также замечания и предложения по
поводу содержания и принципов отбора топиков. Если у Вас появится желание
высказаться об этом эксперименте, ждём Ваших писем или высказываний в
упомянутом форуме.
ФОРУМ SQL.RU: ДЮЖИНА САМЫХ ПОПУЛЯРНЫХ ТОПИКОВ НЕДЕЛИ
ФОРУМ SQL.RU: ВОПРОСЫ ОСТАЛИСЬ БЕЗ ОТВЕТА
ФОРУМ SQL.RU: Истина где – то рядом…
1. | Проблема с временной таблицей!? |
2. | Вопросы о профайлах для SQLMail, очень знать хочется... |
3. | Вопрос про SQL Mail |
#042<<#043
ФОРУМ

http://subscribe.ru/
E-mail: ask@subscribe.ru |
В избранное | ||