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


sp_mergearticlecolumn (Transact-SQL)

Выполняет вертикальное секционирование публикации слиянием. Эта хранимая процедура выполняется на издателе в базе данных публикации.

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

Синтаксис

sp_mergearticlecolumn [ @publication = ] 'publication' 
        , [ @article = ] 'article'
    [ , [ @column = ] 'column'
    [ , [ @operation = ] 'operation' 
    [ , [ @schema_replication = ] 'schema_replication' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ] 
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ] 

Аргументы

  • [ @publication =] 'publication'
    Имя публикации. Аргумент Publication имеет тип sysname и не имеет значения по умолчанию.

  • [ @article =] 'article'
    Имя статьи в публикации. Аргумент article имеет тип sysname и не имеет значения по умолчанию.

  • [ @column =] 'column'
    Определяет столбцы, по которым создается вертикальная секция. Аргумент column имеет тип sysname и значение по умолчанию NULL. Если значение равно NULL и @operation = N'add', все столбцы исходной таблицы по умолчанию добавятся к статье. column не может принимать значение NULL, если для параметра operation устанавливается значение drop. Для исключения столбцов из статьи следует выполнить хранимую процедуру sp_mergearticlecolumn, указав аргументы column и @operation = N'drop' для каждого столбца, который следует удалить из указанной статьи article.

  • [ @operation =] 'operation'
    Состояние репликации. Аргумент operation имеет тип nvarchar(4) и значение по умолчанию ADD. Столбец для репликации помечается при помощи значения add. Значение drop очищает столбец.

  • [ @schema_replication=] 'schema_replication'
    Этот аргумент определяет, будут ли распространены изменения схемы при запуске агента слияния. Аргумент schema_replication имеет тип nvarchar(5) и значение по умолчанию FALSE.

    ПримечаниеПримечание

    Для аргумента schema_replication поддерживается только значение FALSE.

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

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

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

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

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

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

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

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

Замечания

Хранимая процедура sp_mergearticlecolumn используется при репликации слиянием.

Если осуществляется автоматическое управление диапазоном идентификаторов, столбец идентификаторов не может быть сброшен из статьи. Дополнительные сведения см. в разделе Репликация столбцов идентификаторов.

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

Если для обнаружения конфликтов применяется трассировка на уровне строк (по умолчанию), базовая таблица может содержать не более 1 024 столбцов, однако столбцы из статьи должны быть отфильтрованы, чтобы было опубликовано не более 246 столбцов. Если применяется трассировка на уровне столбцов, базовая таблица может содержать не более 246 столбцов.

Пример

DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table1, 
  @source_object = @table1, 
  @type = N'table', 
  @source_owner = @hrschema,
  @schema_option = 0x0004CF1,
  @description = N'article for the Employee table',
  @subset_filterclause = @filterclause;

-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @source_object = @table2, 
  @type = N'table', 
  @source_owner = @salesschema, 
  @vertical_partition = N'true',
  @schema_option = 0x0034EF1,
  @description = N'article for the SalesOrderDetail table';

-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table3, 
  @source_object = @table3, 
  @source_owner = @salesschema,
  @description = 'article for the SalesOrderHeader table', 
  @identityrangemanagementoption = N'auto', 
  @pub_identity_range = 100000, 
  @identity_range = 100, 
  @threshold = 80,
  @schema_option = 0x0004EF1;

-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @column = N'CreditCardApprovalCode', 
  @operation = N'drop', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @join_articlename = @table1, 
  @join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @join_articlename = @table2, 
  @join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

Разрешения

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

См. также

Справочник

Хранимые процедуры репликации (Transact-SQL)

Основные понятия

Определение и изменение фильтра соединения между статьями публикации слиянием

Определение и изменение параметризованного фильтра строк для статьи публикации слиянием

Фильтрация опубликованных данных