Я использую SQL Server 2008 Std с базой данных, которая публикуется в «Транзакционной публикации» для одного подписчика.
Мы не можем вносить какие-либо изменения в таблицы на издателе, не получив сообщения «Невозможно изменить таблицу, потому что она опубликована для репликации». Это кажется странным, потому что изменения схемы (или запускаемые для этого сценарии) должны быть отправлены подписчику. В настоящее время мы должны отказаться от всей системы публикации, чтобы внести изменения в таблицы.
Что мне не хватает? Должен быть способ обновить таблицы издателя?
Спасибо!
Модификация таблицы, которую вы пытаетесь сделать, скорее всего, была сделана в графическом конструкторе таблиц в SSMS. Реализация изменения таблиц через графический дизайнер оставляет желать лучшего.
Когда вы сохраняете изменения, SSMS запускается и копирует всю таблицу в новую таблицу с новым дизайном, затем удаляет «старую» таблицу и переименовывает новую, чтобы заменить ее.
Имейте в виду, что порядок столбцов не имеет большого значения для таблиц, хранящихся в SQL Server, нет необходимости добавлять новые столбцы в «середину» таблицы, иначе это может выглядеть лучше: =)
Поскольку ваша таблица находится в репликации транзакций, SSMS не может выполнить оператор удаления таблицы в фоновом режиме, и вы получите сообщение об ошибке, которое вы отметили.
Чтобы внести нужные изменения (добавить или удалить столбец), вам необходимо выполнить команды в T-SQL
ALTER TABLE dbo.Table ADD NewCol int NULL;
ALTER TABLE dbo.Table DROP COLUMN NewCol;
Обратите внимание, что синтаксис команды несовместим (спасибо MS!). Добавление столбца не требует / позволяет указывать ключевое слово COLUMN, если это требуется для удаления.
Пока ваша репликация правильно настроена для репликации изменений схемы, эти команды будут работать и будут передаваться подписчику.
Таким образом можно внести изменения в таблицу, за исключением изменения первичного ключа. PK необходим для работы репликации транзакций и не может быть изменен. Вам нужно будет удалить статью из репликации, если вы хотите изменить эти столбцы.
Надеюсь, это поможет.