Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
MS SQL Server - дело тонкое...
Информационный Канал Subscribe.Ru |
#250<< #251 |
СОДЕРЖАНИЕ Основы I/O в SQL Server 2000 (продолжение)
По материалам статьи Bob Dorr:
SQL Server 2000 I/O Basics Сборка - распределение (Scatter-Gather)
Начиная с Microsoft SQL Server 7.0, используются Microsoft Win32 APIs: WriteFileGather
и ReadFileScatter. Функция WriteFileGather собирает данные от множества разрозненных
частей буфера и записывает эти данные в файл. Функция ReadFileScatter считывает
данные из файла и распределяет их по нескольким рассредоточенным частям буфера. Для операций с журналом транзакций, SQL Server использует WriteFile вместо WriteFileGather. WriteFileGather используется для I/O в операционной системе, и ограничен размером страницы. Это ограничение подразумевает, что каждая запись в журнал будет иметь размер не менее 4 Кб. Поэтому для журнала используется WriteFile, что позволяет сократить размер записи до границ сектора диска.
Весь I/O журнала транзакций и файлов баз данных SQL Server выполняется с использованием
структуры OVERLAPPED, которая позволяет облегчить использование асинхронного I/O.
Буферный пул SQL Server и диспетчер файлов имеют очень сложные внутренние механизмы
для обслуживания I/O. Для поддержки целостности данных во время асинхронных операций
с I/O используются соответствующие краткие блокировки для чтения/записи.
Обратите внимание: Сортировка и операции спулинга, для осуществления необходимых операции с I/O, совместно используют некоторые механизмы буферного пула SQL Server и диспетчера файлов. Также, обратите внимание, что SQL Server не всегда обслуживает завершение I/O в рамках того же самого рабочего потока, который отправлял этот запрос I/O. Завершение I/O в SQL Server выполняется унаследованным рабочим потоком в рамках того же самого User Mode Scheduler (UMS), в котором запрос I/O был отправлен на исполнение. Внутренние механизмы в SQL Server назначают подпрограммы повторного вызова, которые будут вызываться при завершении I/O. Повторный вызов - это специфический для SQL Server механизм, который не основывается на сообщениях, подобных функциям ReadFileEx или WriteFileEx. Например, если чтение страницы данных завершено, подпрограмма повторного вызова проверит, что код возврата операционной системы равен нулю (значение GetLastError), и это будет гарантировать, что все байты были переданы правильно, что выполнена проверка на ошибки оборванных страниц, и что гарантируется правильный номер страницы, и исполнены все другие разумные проверки. ПРОДОЛЖЕНИЕ СЛЕДУЕТ Решение проблем, связанных с целостностью данных в Analysis Services 2005 (продолжение)
По материалам статьи T.K. Anand, Microsoft Corporation:
Handling Data Integrity Issues in Analysis Services 2005 Март 2005 года О чем эта статья: В статье рассматриваются типичные проблемы, связанные с целостностью данных, и показывается, какие средства дает Analysis Services 2005 для решения этих проблем. (10 печатных страниц)
Относится к: Содержание
Вступление Элементы управления целостностью данных В этой главе мы рассмотрим различные элементы управления, которые предлагает Analysis Services администраторам баз данных для решения проблемам целостности данных. Заметьте, что эти элементы не являются полностью независимыми. Например, Null Processing (обработка Null) зависит от Unknown Member (неизвестный элемент), а Error Configuration (обработка ошибок) зависит от Null Processing и Unknown Member. Unknown Member (неизвестный элемент) Объект Dimension имеет свойство UnknownMember, которое принимает три возможных значения - None, Hidden и Visible. Когда UnknownMember=Hidden/Visible, Analysis Server автоматически создает специальный элемент, называемый Unknown Member (неизвестный элемент) в каждом атрибуте измерения. UnknownMember=Hidden показывает, что неизвестный элемент будет скрыт для результатов запроса и наборов строк схемы. Значение по умолчанию для свойства UnknownMember - None. Свойство UnknownMemberName может использоваться для определения имени неизвестного элемента. Свойство UnknownMemberTranslations может быть использовано для определения локализованных заголовков неизвестного элемента. На рис.2 показано измерение Product с UnknownMember=Visible и UnknownMemberName="Invalid Product".
![]() Рис.2. Измерение Product Null Processing (обработка Null) Объект DataItem используется в Analysis Services DDL для определения метаданных о любом скалярном элементе данных. Он включает: - Ключевой столбец (столбцы) атрибута- Имя столбца атрибута - Столбец-источник атрибута Объект DataItem содержит много свойств, включая следующие: - DataType- DataSize - NullProcessing - Collation Свойство NullProcessing определяет, какое действие должен предпринять сервер, когда он обнаруживает значение NULL. Это свойство может принимать пять возможных значений: - ZeroOrBlank - сообщает серверу, чтобы он сконвертировал значение NULL в нулевое значение (для числовых элементов данных) или в пустую строку (для строковых элементов данных). Так обрабатывает значения NULL Analysis Services 2000. - Preserve - сообщает серверу, чтобы он оставил значения NULL. Сервер может хранить NULL, как любое другое значение. - Error - сообщает серверу, что значение NULL запрещено в этом элементе данных. Сервер сгенерирует ошибку целостности данных и проигнорирует эту запись. - UnknownMember - сообщает серверу обработать значение NULL как неизвестный элемент. Сервер так же сгенерирует ошибку целостности данных. Эта опция применима только для ключевых столбцов атрибутов. - Default - условное значение по умолчанию. Оно подразумевает использование ZeroOrBlank для измерений и кубов, и UnknownMember для структур добычи данных (mining structures) и моделей. Заметьте, что опции NullProcessing - Error и UnknownMember, генерируют ошибки целостности данных, а другие опции - нет. На следующем рисунке показан редактор DataItem для ключевых столбцов атрибута измерения.
![]() Рис.3. Редактор DataItem Collection. Список ошибок Перед рассмотрением элемента управления обработки ошибок Error Configuration нам нужно четко определить различные типы ошибок целостности данных, с которыми может встретиться сервер. Мы уже узнали о двух из них в предыдущей главе об обработке Null. Ниже приведен полный список: - NullKeyNotAllowed - эта ошибка генерируется, когда встречается запрещенное значение NULL и запись игнорируется (когда NullProcessing = Error). - NullKeyConvertedToUnknown - эта ошибка генерируется, когда ключевое значение NULL обрабатывается как неизвестный элемент (когда NullProcessing = UnknownMember). - KeyDuplicate - эта ошибка генерируется только во время обработки измерений, когда ключ атрибута встречается больше одного раза. Так как ключи атрибутов должны быть уникальными, сервер проигнорирует повторяющиеся записи. В большинстве случаев такая ошибка допустима. Но иногда она указывает на недостатки в дизайне измерений, что может привести к несогласующимся связям между атрибутами. - KeyNotFound - это классическая ошибка ссылочной целостности в реляционных базах данных. Она может встретиться как при обработке партиций, так и при обработке измерений. Error Configuration (обработка ошибок) Объект ErrorConfiguration является центральным в управлении ошибками целостности данных. Сервер имеет конфигурацию ошибок по умолчанию (в конфигурационном файле msmdsrv.ini). Конфигурация ошибок также может быть определена в базе данных, измерении, кубе, группе измерений и партиции. Кроме того, конфигурирование ошибок также может быть задействовано для команд Batch и Process. Объект ErrorConfiguration определяет, как сервер должен обрабатывать четыре типа ошибок целостности данных. Объект имеет следующие свойства: - KeyErrorLogFile - это файл, в который сервер логирует ошибки целостности данных. - KeyErrorLimit (по умолчанию = 0) - максимальное количество ошибок целостности данных, которые сгенерируются на сервере до прерывания обработки. Значение -1 показывает, что ограничений нет.
- KeyErrorLimitAction (по умолчанию = StopProcessing) - это действие, которое предпримет
сервер, когда будет достигнут предел количества ошибок. Это свойство имеет две опции:
- KeyErrorAction (по умолчанию = ConvertToUnknown) - это действие, которое должен выполнить
сервер, когда возникает ошибка KeyNotFound. Свойство имеет две опции: - NullKeyNotAllowed (по умолчанию = ReportAndContinue) - NullKeyConvertedToUnknown (по умолчанию = IgnoreError) - KeyDuplicate (по умолчанию = IgnoreError) - KeyNotFound (по умолчанию = ReportAndContinue) — действие, которое должен выполнить сервер, когда возникает ошибка целостности данных этого типа. Свойство имеет три опции: - IgnoreError - сообщает серверу, чтобы он продолжал обработку до достижения предела количества ошибок без логирования ошибок. - ReportAndContinue - сообщает серверу, чтобы он продолжал обработку до достижения предела количества ошибок с логированием ошибок. - ReportAndStop - сообащает серверу, чтобы он логировал ошибку и прервал обработку немедленно (вне зависимости от предела количества ошибок). Заметьте, что сервер всегда выполняет правила NullProcessing перед правилами ErrorConfiguration для каждой записи. Это важно, так как обработка NULL может приводить к ошибкам целостности данных, которые потом должны обработать правила ErrorConfiguration. На следующем рисунке показаны свойства ErrorConfiguration для куба в панели свойств.
![]() Рис.4. Панель свойств ОКОНЧАНИЕ СЛЕДУЕТ ССЫЛКИ НА СТАТЬИСтатьи на русском языке
Некоторые архитектурные особенности System.Data.*
GUI for Sql Server Service Broker Самые популярные темы недели
Кто на чем пишет клиентов под SQL Server?
выгрузка данных в XML-файл |
Вопросы, предложения, коментарии, замечания, критику и т.п. оставляйте Виталию Степаненко и Александру Гладченко в форуме: Обсуждение рассылки
|
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.winsoft.sqlhelpyouself |
Отписаться |
В избранное | ||