Как правильно изменить столбец PK таблицы, являющейся источником репликации слиянием, в SQL SVR 2005? - PullRequest
0 голосов
/ 29 апреля 2009

У меня есть таблица, в которой в качестве первичного ключа указан столбец идентификаторов. На данный момент ни одна из данных в таблице не важна, поэтому я могу удалить все это, но я хочу изменить столбец с int на bigint и, возможно, переустановить его на bigint.minvalue, чтобы получить максимально возможный диапазон, прежде чем закончится ценности. Я хотел бы сделать это без необходимости перестраивать репликацию или изменять подписчиков.

Если я выполню

alter table MyTable
    alter column MyTableId bigint not null

Я получаю ошибки:

Msg 5074, Level 16, State 1, Line 5
The object 'repl_identity_range_CEEB13F5_11D2_435C_BE5D_EBF91EBF8DE7' is dependent on column 'MyTableId'.
Msg 5074, Level 16, State 1, Line 5
The object 'PK_MyTable' is dependent on column 'MyTableId'.
Msg 4922, Level 16, State 9, Line 5
ALTER TABLE ALTER COLUMN MyTableId failed because one or more objects access this column.

1 Ответ

1 голос
/ 29 апреля 2009

Вы не можете изменить первичный ключ в опубликованной таблице, поскольку она является частью системы, используемой для перемещения данных; поэтому удалите таблицу из публикации; внесите изменения и опубликуйте их.

Вы можете оставить свой стол, используя sp_droparticle http://msdn.microsoft.com/en-us/library/ms173832.aspx

Затем внесите изменения в таблицу / ваш ключ

Наконец, используйте sp_addmergearticle, чтобы добавить его обратно в http://msdn.microsoft.com/en-us/library/ms174329.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...