Репликация транзакций без первичного ключа (уникальный индекс)

StackOverflow https://stackoverflow.com/questions/1164648

Вопрос

Я только что столкнулся с чем-то тревожным, я пытался реализовать репликацию транзакций из базы данных, дизайн которой не находится под нашим контролем.Эта репликация была предназначена для того, чтобы выполнять отчетность, не слишком нагружая систему.При попытке репликации пересеклись только некоторые таблицы.

При исследовании таблицы не были выбраны для репликации, потому что у них нет первичного ключа, я подумал, что этого не может быть, он даже отображается как первичный ключ, если я использую ODBC и ms access, но не в management studio.Кроме того, запросы не являются смехотворно медленными.

Я попытался вставить дублирующуюся запись, и она не смогла сообщить об уникальном индексе (не первичном ключе).Похоже, что таблицы были реализованы с использованием уникального индекса в отличие от первичного ключа.Не знаю, почему я смогла закричать.

Есть ли в любом случае возможность выполнить транзакционную репликацию или альтернативу, она должна быть оперативной (в последнюю минуту или две).Основным сервером базы данных в настоящее время является sql 2000 sp3a и reporting server 2005.

Единственное, о чем я сейчас подумал, - это настроить репликацию так, как если бы это была база данных другого типа.Я считаю, что репликация, скажем, oracle возможна, заставит ли это использовать, скажем, драйвер ODBC, как я предполагаю, который использует access, следовательно, показывая первичный ключ.Я не знаю, насколько это точно с точки зрения моего понимания этого вопроса.

Это было полезно?

Решение

Как MSDN состояния, невозможно создать транзакционную репликацию для таблиц без первичных ключей.Вы могли бы использовать Репликация слиянием (один из способов), для которого не требуется первичный ключ, и он автоматически создает rowguid столбец, если он не существует:

При репликации слиянием используется глобальный столбец уникального идентификатора (GUID) для идентификации каждой строки во время процесса репликации слиянием .Если опубликованная таблица не имеет uniqueidentifier столбца со свойством ROWGUIDCOL и уникальным индексом, репликация добавляет единицу.Убедитесь, что все инструкции SELECT и INSERT , ссылающиеся на опубликованные таблицы, используют списки столбцов.Если таблица больше не публикуется, а репликация добавила столбец, столбец удаляется;если столбец уже существовал, он не удаляется.

К сожалению, при использовании репликации слиянием у вас будет снижение производительности.

Если вам нужно использовать репликацию для отчетность только, и вам не нужно, чтобы данные были точно такими же, как у издателя, тогда вы могли бы также рассмотреть возможность репликации моментальных снимков

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top