Фильтрация реплицируемых данных (продолжение)
По материалам статьи Microsoft:
Filtering Published Data
Динамические снимки
Динамические снимки (Dynamic Snapshots) обеспечивают хорошую эффективность при применении снимка
merge публикации совместно с динамическими фильтрами. Высокая эффективность достигается за счёт
использования Microsoft SQL Server 2000 bulk copy, что позволяет оптом применять данные на
subscriber вместо последовательного исполнения инструкции INSERT. Создание динамического снимка
для подписки позволяет также обеспечить лучшую гибкость и экономичность при передаче снимка на
сменных носителях (например, CD- ROM). Такое применение снимка на подписчике с использованием
носителя можно выполнить быстрее, чем посредством применения первоначального моментального снимка,
передаваемого по медленному коммуникационному каналу.
Когда в merge публикации используются динамические фильтры, данные издаваемой таблицы фильтруются
на основе свойств подключения Merge Agent для текущей в течение процесса объединения (merge)
публикации. По умолчанию, публикация с динамическим фильтром основывается на операциях вставки
(INSERT) данных от издателя, что позволяет применить данные на подписчике, как часть первоначального
снимка. Это может стать долгим и ресурсоёмким процессом, потому что Merge Agent должен будет
определить строка-к-строке (row-by-row) данные, которые нужно включить в снимок, основываясь на
динамических критериях фильтра. Применение динамических снимков обеспечивает более высокую
эффективность, за счёт использования механизма SQL bulk copy (bcp) при применении данных на
подписчике, т.е. за счёт применения первоначального снимка с использованием динамических фильтров.
Когда Вы создаете динамический снимок, Вы, фактически, генерируете моментальный снимок, который
будет настроен для заданного подписчика. Поскольку данные будут уже извлечены и скопированы,
применяться снимок будет также быстро, как применяется снимок без динамических фильтров. Однако,
есть и отрицательные моменты, это дополнительные временные затраты и дополнительное дисковое
пространство, которые потребуются при создании и сохранении динамического снимка. Хотя для создания
динамического снимка требуется больше времени (по сути, снимок будет генерироваться дважды),
процесс применения снимка на подписчиках пройдёт быстрее, чем применение стандартного снимка для
merge публикации с динамическим фильтром. Вначале будет сгенерирован стандартный снимок, а
динамический снимок создаётся путём фильтрации стандартного снимка.
Динамические снимки можно создавать с помощью Enterprise Manager, с помощью мастеров: Create
Publication и Create Dynamic Snapshot Job, с помощью системных хранимых процедур и Transact-SQL
скриптов, а также с помощью Microsoft ActiveX controls или SQL-DMO.
Некоторые соображения по поводу Dynamic Snapshot
При планировании merge публикации с динамическими фильтрами и динамическими снимками, нужно учитывать
следующие моменты:
1. Динамические снимки могут использоваться со всеми типами подписки. Вы можете создавать
динамический снимок, используя Create Dynamic Snapshot Job Wizard и/или запустив Snapshot Agent с
соответствующими параметрами. Применение динамического снимка осуществляется с использованием Merge
Agent или Merge ActiveX Control и с установкой свойств DynamicSnapshotLocation.
2. Вы можете использовать параметр командной строки - DynamicSnapshotLocation для Merge Agent или
свойство DynamicSnapshotLocation в Merge ActiveX Control, чтобы применить предварительно
сгенерированный динамический снимок.
3. Динамические фильтры и динамические снимки применяются только с Merge репликацией.
4. Чтобы создать динамический снимок, для публикации должен быть включён динамический фильтр и
должен быть создан стандартный снимок.
5. Файлы динамических снимков также будут сжаты, если сжат стандартный снимок. Чтобы сжать
стандартный снимок, и соответственно динамический снимок, откройте свойства публикации, и для
"Snapshot Location tab" выберете "Generate snapshots in the following location", что бы задать в
текстовом поле место расположения снимка, а затем нужно выбрать "Compress Snapshot files in this
location".
6. Логин, указанный для входа в систему издателя, должен быть указан в Publication Access List
(PAL) или быть членом роли sysadmin публикуемой базы данных или группы DB_owner. Этот логин может
быть определен в Create Dynamic Snapshot Job Wizard или при использовании параметра Snapshot
Agent -DynamicFilterLogin.
7. Поскольку SQL Server добавляет и удаляет временные логины в Snapshot Agent, логин Snapshot
Agent издателя должен быть членом серверной роли securityadmin и быть членом группы DB_owner
публикуемой базы данных, чтобы иметь возможность создавать динамические снимки.
8. Логины динамического фильтра, указанные для создания динамического снимка, должны быть включены
в соответствующий список доступа публикации (PAL).
9. SQL Server на издателе должен иметь смешанный режим защиты (mixed security mode).
10. Изменение свойств публикации без пересоздания стандартного снимка для публикации с
динамическим фильтром сделает не возможным применение всех последующих динамических снимков,
которые будут сгенерированы.
11. Не используйте параметры в системной функции SUSER_SNAME(), используемой с динамическими
снимками, например: SUSER_SNAME (SID).
12. Функции, которые неявно полагаются на SUSER_SNAME() или текущего пользователя, например:
USER_NAME(), CURRENT_USER(), System_USER(), USER_id() или SUSER_SID() не будут правильно работать
и не должны использоваться с динамическими снимками (вместо них нужно использовать SUSER_SNAME()
или HOST_NAME()).
13. В динамическом фильтре можно использовать определяемые пользователем функции (user-defined
functions). Однако, если определяемый пользователем фильтр выдаёт одни и те же значения для всех
подписчиков, это - тип статического фильтра, и нет никакой необходимости использовать динамические
снимки, потому что все подписчики получат одинаковый снимок данных.
14. Вы можете использовать системную функцию SUSER_SNAME(), вложенную в определяемую пользователем
функцию, в критериях динамического фильтра, и можете использовать динамический снимок (например,
MyUDF (SUSER_SNAME ()), где MyUDF - определяемая пользователем функция, использующая SUSER_SNAME()).
Системная функция должна быть видима в критериях динамического фильтра. Если системная функция
существует в определении определяемой пользователем функции, и Вы вводите в динамический фильтр
только определяемую пользователем функцию, Вы не сможете использовать динамический снимок.
Создание и применение динамических снимков вручную
Запустите Snapshot Agent, чтобы создать стандартную схему снимка и все другие файлы. Используйте
стандартные свойства (-Publisher, -PublisherDB, -Publication, и т.д.) при запуске Snapshot Agent.
Запустите Snapshot Agent, чтобы создать файлы массовых копий (.bcp) единожды для каждого
определенного раздела подписчика. При этом, используйте стандартные свойства и следующие свойства:
-DynamicFilterHostName
-DynamicFilter Login
-DynamicSnapshotLocation
Запустите Merge Agent для каждой подписки, чтобы применить начальный динамический снимок на
подписчиках. Используйте стандартные свойства, и добавьте следующие свойства:
-Hostname
-DynamicSnapshotLocation
Сверка информации на подписчике
Merge репликация с динамическим фильтром имеет функцию, которая выдаёт информацию о подписчике.
Microsoft SQL Server 2000 проверяет информацию подписчика, основываясь на этой функции до того,
как произойдёт каждое объединение. Это гарантирует, что информация будет последовательно разбита
на разделы для каждого объединения. Например, когда публикация с динамическим фильтром использует
функцию SUSER_SNAME(), Merge Agent применяет начальный снимок к каждому подписчику, основываясь на
данных, которые является верными для выражения SUSER_SNAME().
Когда подписчик повторно соединяется с издателем при следующей синхронизации, Merge Agent сверяет
информацию подписчика и гарантирует, что будут синхронизированы те разделы, которые были присланы
до этого, как часть первоначального снимка. Если Merge Agent обнаруживает, что выражение фильтра
возвращает разные значения, объединение оканчивается сбоем. Поскольку значение функции, используемое
в динамическом фильтре, изменилось, подписка для подписчика должна быть повторно инициализирована
или оригинальный логин или значение host_name должны использоваться до того, как будет разрешена
синхронизация. Это предотвратит проблемы, которые могут возникать, если изменены параметры объединения
для подписчика.
Вы можете выбирать создание динамического фильтра, а затем сверку информации подписчика при создании
публикации, используя Create publication Wizard, или иначе, после того, как публикация создана и
определена для динамических фильтров, можно использовать свойства публикации.
ПРОДОЛЖЕНИЕ СЛЕДУЕТ
ССЫЛКИ НА СТАТЬИ
Реинженеринг предприятия на основе имитационной модели
Автор: Тельнов Ю.Ф.
Современные технологии бизнеса характеризуются высокой
динамичностью, связанной с постоянно изменяющимися потребностями рынка, ориентацией
производства товаров и услуг на индивидуальные потребности заказчиков и
клиентов, непрерывным совершенствованием технических возможностей и сильной
конкуренцией. В этих условиях требуется разработка систем управления
предприятием, которые оперативно отражают состояние экономических объектов с
целью принятия своевременных решений об изменениях в бизнес-процессах...
[подробнее] Корпоративные информационные системы (КИС): не повторяйте пройденных ошибок
Автор: Геннадий Верников.
В течение последних лет значительная часть дискуссий,
касающихся развития корпоративного менеджмента, относится к сфере практического
применения современных информационных технологий. Проблематика построения
комплексных управленческих систем выросла в отдельную ветвь науки об управлении
и стала причиной развития целой отрасли высоких технологий. При этом иногда
складывается впечатление, что все нынешнее информационное изобилие развивалось
и продолжает развиваться таким образом, что становится способным ввести в
заблуждение не только неподготовленных читателей, но и самих специалистов в
области управления. С одной стороны, это не удивительно, если подходить к
данной проблеме с научной точки зрения, так как для любых дисциплин на
первоначальном этапе развития характерно отсутствие единой системы терминов и
понятий, наличие принципиально разных научных школ и подходов, а также масса
других недостатков, вызванных отсутствием достаточного практического опыта.
Однако, если принимать во внимание интересы всех существующих и потенциальных
заказчиков информационных систем, на предприятиях которых производятся
дорогостоящие и зачастую плачевные опыты по обкатке и адаптации существующих
решений, то фокус необходимо сместить из научно-методической области в область
бизнеса. Постараемся в рамках этой статьи хотя бы частично разобраться в
путанице определений терминов, понятий и аббревиатур...
[подробнее] Моделирование AS-IS: за и против
Автор: Дорин Эндрюс.
Следует ли мне строить модели AS-IS (моделирование
существующего положения)? Невозможно ответить до того, как вы сначала не
спросите себя, почему вы взялись за этот проект...
[подробнее] Программное создание базы данных с помощью ADOX
Автор: Иноземцев Руслан.
В данной статье будут рассмотрены приемы программного
создание баз данных с помошью библиотек ADOX...
[подробнее] Знакомство с естественными XML-базами данных
Автор: Кимбро Стэйкин.
Практика обработки и хранения XML потребовала создания новых
типов программных инструментальных средств, одним из которых является
"естественные XML-базы данных" (в дальнейшем мы будем пользоваться
сокращением NXD, Native XML Database). В данной статье описываются основные
принципы таких баз данных...
[подробнее]