Поделиться через


sp_repladdcolumn (Transact-SQL)

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

ms189464.note(ru-ru,SQL.90).gifВажно!
Данная хранимая процедура устарела и поддерживается в основном для обеспечения обратной совместимости. Применять только с издателями Microsoft SQL Server 2000 и переиздающими подписчиками SQL Server 2000

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_repladdcolumn [ @source_object = ] 'source_object', [ @column = ] 'column' ]
    [ , [ @typetext = ] 'typetext' ]
    [ , [ @publication_to_add = ] 'publication_to_add' ]
    [ , [ @from_agent = ] from_agent ]
    [ , [ @schema_change_script = ] 'schema_change_script' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

Аргументы

  • [ @source_object =] 'source_object'
    Имя таблицы статьи, которая будет содержать добавляемый столбец. Аргумент source_object имеет тип nvarchar(358) и не имеет значения по умолчанию.
  • [ @column=] 'column'
    Имя столбца, который будет добавлен в таблицу для репликации. Аргумент column имеет тип sysname и не имеет значения по умолчанию.
  • [ @typetext=] 'typetext'
    Определение добавляемого столбца. Аргумент typetext имеет тип nvarchar(3000) и не имеет значения по умолчанию. Например, если добавляется столбец order_filled, являющийся полем из одного символа, не допускающий значения NULL и имеющий значение по умолчанию N, то значением аргумента column будет order_filled, а значением аргумента typetext — определение столбца char(1) NOT NULL CONSTRAINT constraint_name DEFAULT 'N'.
  • [ @publication_to_add=] 'publication_to_add'
    Имя публикации, к которой добавляется новый столбец. Аргумент publication_to_add имеет тип nvarchar(4000) и значение по умолчанию ALL. Если задано значение ALL, столбец добавляется во все публикации, содержащие эту таблицу. Если указан аргумент publication_to_add, столбец добавляется только в эту публикацию.
  • [ @from_agent= ] from_agent
    Выполняется ли хранимая процедура агентом репликации. Аргумент from_agent имеет тип int и значение по умолчанию 0. Значение 1 используется, если эта хранимая процедура выполняется агентом репликации, а во всех остальных случаях должно использоваться значение по умолчанию 0.
  • [ @schema_change_script=] 'schema_change_script'
    Задает имя сценария SQL Server, используемого для изменения системы, создавшей пользовательские хранимые процедуры. Аргумент schema_change_script имеет тип nvarchar(4000) и значение по умолчанию NULL. Репликация позволяет пользовательским хранимым процедурам заменять одну или несколько процедур по умолчанию, используемых в репликации транзакций. Аргумент schema_change_script выполняется после изменения схемы реплицированной таблицы статьи, используя процедуру sp_repladdcolumn, и может быть использован для выполнения следующих процедур:

    • если пользовательские хранимые процедуры автоматически восстанавливаются, то для их удаления и замены пользовательскими хранимыми процедурами, которые поддерживают новую схему, можно воспользоваться аргументом schema_change_script;
    • если пользовательские хранимые процедуры восстанавливаются не автоматически, то для их восстановления или создания можно воспользоваться аргументом schema_change_script.
  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Включает или отключает возможность наличия недействительных моментальных снимков. Аргумент force_invalidate_snapshot имеет тип bit и значение по умолчанию 1.

    Значение 1 указывает, что изменения в статье могут сделать моментальный снимок неактуальным. В этом случае значение 1 позволяет сделать новый моментальный снимок.

    0 указывает, что изменение статьи не приводит к недействительности моментального снимка.

  • [ @force_reinit_subscription = ] force_reinit_subscription
    Включает или отключает возможность повторной инициализации подписки. Аргумент force_reinit_subscription имеет тип bit и значение по умолчанию 0.

    Значение 0 указывает, что изменения в статье не вызывают повторной инициализации подписки.

    Значение 1 указывает, что изменения в статье могут привести к повторной инициализации подписки. В этом случае значение 1 позволяет выполнить повторную инициализацию подписки.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Процедура sp_repladdcolumn является устаревшей и сохранена только в целях обратной совместимости. Добавление столбца в реплицированные таблицы статьи необходимо осуществить путем выполнения команд языка определения данных (DDL) над опубликованной таблицей. При репликации эти команды DDL реплицируются автоматически, если была включена репликация DDL. Дополнительные сведения см. в разделе Внесение изменений схем в базы данных публикаций.

Процедура sp_repladdcolumn, как и раньше, необходима при передаче изменений DDL от опубликованных подписчиков, запущенных на более ранних версиях SQL Server 2000.

Процедура sp_repladdcolumn используется для всех типов репликации.

При использовании процедуры sp_repladdcolumn, если были сделаны изменения схемы статьи, которая принадлежит публикации, которая использует пакет службы DTS, изменения схемы не передаются подписчику и пользовательские процедуры для INSERT/UPDATE/DELETE не формируются заново на подписчике. Пользователю необходимо восстановить этот пакет служб DTS вручную и выполнить соответствующие изменения схемы на подписчиках. Если обновление схемы не применяется, агент распространителя не сможет применить соответствующие изменения. Перед внесением изменений в схему убедитесь, что нет транзакций, ожидающих доставки.

Если аргументу typetext назначено значение по умолчанию, которое является недетерминированной функцией (например 'datetime not null default getdate()'), добавление столбца может привести к отсутствию конвергенции, так как функция выполняется на подписчике для загрузки значения по умолчанию в столбец.

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

ms189464.note(ru-ru,SQL.90).gifВажно!
Резервная копия базы данных публикации должна быть создана перед выполнением процедуры sp_repladdcolumn. Невыполнение этого требования может вызвать ошибку слияния после восстановления базы данных публикации.

Разрешения

Только члены фиксированной серверной роли sysadmin и фиксированной роли базы данных db_owner могут выполнять процедуру sp_repladdcolumn.

См. также

Справочник

Системные хранимые процедуры (Transact-SQL)

Другие ресурсы

Устаревшие возможности в репликации SQL Server 2005

Справка и поддержка

Получение помощи по SQL Server 2005