У меня есть база данных, работающая под SQL-сервером 2005 с репликацией слияния. Я хочу изменить некоторые столбцы FK для 'не пустого указателя', поскольку у них должно всегда быть значение. SQL-сервер не позволит мне сделать это, хотя, это - то, что он говорит:
- Не мог изменить таблицу. Это недопустимо для отбрасывания ограничения по умолчанию на rowguid столбец, который используется репликацией слияния. Изменение схемы перестало работать во время выполнения внутренней процедуры репликации. Для корректирующего действия см. другие сообщения об ошибках, которые сопровождают это сообщение об ошибке. Транзакция заканчивается в триггере. Пакет был прерван.
Я не пытаюсь изменить ограничения на rowguid столбец вообще, только на другой столбец, который действует как FK. Другие столбцы, которые я хочу установить для не пустого указателя, потому что запись не имеет никакого смысла без той информации (т.е. на клиенте, имени клиента).
Вопросы: существует ли способ обновить столбцы для 'не пустого указателя', не выключая репликацию, затем снова включающую его снова? Это - даже лучший способ сделать это - я должен использовать ограничение вместо этого?
Очевидно, SSMS вносит изменения в таблицы, удаляя их и создавая заново. Поэтому просто нужно было внести изменения с помощью оператора T-SQL.
ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn nvarchar(50) NOT NULL
Вам необходимо записать изменение в операторах T-SQL, поскольку SQL Server Management Studio будет пытаться отбросить и воссоздать таблицу, а не просто добавлять дополнительный столбец.
Вам также необходимо будет добавить новый столбец в ваших публикациях.
Обратите внимание, что изменение столбца таким образом может отрицательно сказаться на производительности репликации. В зависимости от размера изменяемой таблицы может привести к репликации большого количества данных. Учтите, что хотя изменение вашей таблицы может быть выполнено в одном операторе, если затронут 1 миллион строк, то на подписчике будет сгенерирован 1 миллион обновлений, а НЕ один оператор обновления, как обычно думают.
Практическое улучшение производительности. подход .......
Для выполнения этого упражнения вам необходимо: оба издателя / подписчика