Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server Управляемый экземпляр SQL Azure
Создает представление, определяющее публикуемую статью, когда таблица фильтруется горизонтально или вертикально. Представление используется как фильтруемый источник схемы и данных для целевых таблиц. Эта хранимая процедура может изменять только те статьи, на которые нет подписки. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_articleview
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @view_name = ] N'view_name' ]
[ , [ @filter_clause = ] N'filter_clause' ]
[ , [ @change_active = ] change_active ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @refreshsynctranprocs = ] refreshsynctranprocs ]
[ , [ @internal = ] internal ]
[ ; ]
Аргументы
[ @publication = ] N'publication'
Имя публикации, содержащей статью. @publication — sysname без значения по умолчанию.
[ @article = ] N'article'
Имя статьи. @article — sysname без значения по умолчанию.
[ @view_name = ] N'view_name'
Имя представления, определяющего опубликованную статью. @view_name — nvarchar(386) с значением по умолчаниюNULL.
[ @filter_clause = ] N'filter_clause'
Предложение ограничения (WHERE), определяющее горизонтальный фильтр. При вводе предложения ограничения опустите ключевое WHERE слово. @filter_clause — nvarchar(max), с значением по умолчаниюNULL.
[ @change_active = ] change_active
Разрешает изменение столбцов в публикациях, на которые имеются подписки. @change_active имеет значение int с значением по умолчанию0.
- Если
0столбцы не изменяются. - Если
1представления можно создать или повторно создать в активных статьях с подписками.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Подтверждает, что действие, выполненное этой хранимой процедурой, может сделать недействительным существующий моментальный снимок. @force_invalidate_snapshot бит с значением по умолчанию0.
0указывает, что изменения в статье не вызывают недопустимого моментального снимка. Если хранимая процедура определяет, что изменение требует создания нового моментального снимка, возникает ошибка и изменения не выполняются.1указывает, что изменения в статье могут привести к недопустимому моментальному снимку, и если существуют существующие подписки, для которых требуется новый моментальный снимок, предоставляет разрешение для того, чтобы существующий моментальный снимок был помечен как устаревший и создан новый моментальный снимок.
[ @force_reinit_subscription = ] force_reinit_subscription
Подтверждает, что действие, выполняемое данной хранимой процедурой, может сделать необходимой повторную инициализацию существующих подписок. @force_reinit_subscription бит с значением по умолчанию0.
0указывает, что изменения в статье не приводят к повторной инициализации подписки. Если хранимая процедура определяет, что изменение потребует повторной инициализации подписки, то выдается сообщение об ошибке, и изменения не производится.1указывает, что изменения в статье приводят к повторной инициализации существующей подписки и предоставляют разрешение на повторную инициализацию подписки.
[ @publisher = ] N'publisher'
Указывает издателя, отличного от SQL Server. @publisher — sysname с значением по умолчаниюNULL.
@publisher не следует использовать при публикации с издателя SQL Server.
[ @refreshsynctranprocs = ] refreshsynctranprocs
Указывает, создаются ли хранимые процедуры, используемые для синхронизации репликации. @refreshsynctranprocs бит с значением по умолчанию1.
1означает, что хранимые процедуры повторно создаются.0означает, что хранимые процедуры не создаются повторно.
[ @internal = ] внутренний
Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
Значения кода возврата
0 (успешно) или 1 (сбой).
Замечания
sp_articleview создает представление, определяющее опубликованную статью, и вставляет идентификатор этого представления в sync_objid столбец таблицы sysarticles и вставляет текст предложения ограничения в filter_clause столбец. Если все столбцы реплицируются и нет filter_clause, sync_objid в таблице sysarticles задан идентификатор базовой таблицы, а использование sp_articleview не требуется.
Чтобы опубликовать вертикально отфильтрованную таблицу (т. е. для фильтрации столбцов), сначала выполните запуск sp_addarticle без параметра @sync_object, выполните sp_articlecolumn один раз для репликации каждого столбца (определение вертикального фильтра), а затем выполните командуsp_articleview, чтобы создать представление, определяющее опубликованную статью.
Чтобы опубликовать горизонтально отфильтрованную таблицу (т. е. для фильтрации строк), выполните sp_addarticle без параметра @filter_name . Запустите sp_articlefilter, предоставляя все параметры, включая @filter_clause. Затем запустите sp_articleviewвсе параметры, включая идентичные @filter_clause.
Чтобы опубликовать таблицу с вертикальной и горизонтальной фильтрацией, запустите sp_addarticle без @sync_object или @filter_name параметров. Запустите sp_articlecolumn один раз для репликации каждого столбца, а затем запустите sp_articlefilter и sp_articleview.
Если в статье уже есть представление, определяющее опубликованную статью, sp_articleview удаляет существующее представление и создает новое автоматически. Если представление было создано вручную (type в системных таблицах ) 5существующее представление не удаляется.
Если вы создаете хранимую процедуру пользовательского фильтра и представление, определяющее опубликованную статью вручную, не выполняйте.sp_articleview Вместо этого укажите эти значения в качестве параметров @filter_name и @sync_object sp_addarticle, а также соответствующее значение @type.
Примеры
DECLARE @publication AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL';
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';
-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle
@publication = @publication,
@article = @table,
@source_object = @table,
@source_owner = @schemaowner,
@schema_option = 0x80030F3,
@vertical_partition = N'true',
@type = N'logbased',
@filter_clause = @filterclause;
-- (Optional) Manually call the stored procedure to create the
-- horizontal filtering stored procedure. Since the type is
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter
@publication = @publication,
@article = @table,
@filter_clause = @filterclause,
@filter_name = @filtername;
-- Add all columns to the article.
EXEC sp_articlecolumn
@publication = @publication,
@article = @table;
-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn
@publication = @publication,
@article = @table,
@column = N'DaysToManufacture',
@operation = N'drop';
-- (Optional) Manually call the stored procedure to create the
-- vertical filtering view. Since the type is 'logbased',
-- this stored procedures is executed automatically.
EXEC sp_articleview
@publication = @publication,
@article = @table,
@filter_clause = @filterclause;
GO
Разрешения
Могут выполняться только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.sp_articleview