sp_articleview (Transact-SQL)
S’applique à : SQL Server Azure SQL Managed Instance
Crée la vue qui définit l'article publié lorsqu'une table est filtrée verticalement ou horizontalement. Cette vue est utilisée comme source filtrée du schéma et des données des tables de destination. Seuls les articles ne faisant pas l'objet d'un abonnement peuvent être modifiés par cette procédure stockée. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.
Conventions de la syntaxe Transact-SQL
Syntaxe
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 ]
[ ; ]
Arguments
[ @publication = ] N’publication'
Nom de la publication qui contient l’article. @publication est sysname, sans valeur par défaut.
[ @article = ] N’article'
Nom de l’article. @article est sysname, sans valeur par défaut.
[ @view_name = ] N’view_name'
Nom de la vue qui définit l’article publié. @view_name est nvarchar(386), avec la valeur par défaut NULL
.
[ @filter_clause = ] N’filter_clause'
Clause de restriction (WHERE
) qui définit un filtre horizontal. Lorsque vous entrez la clause de restriction, omettez le WHERE
mot clé. @filter_clause est nvarchar(max), avec la valeur par défaut NULL
.
[ @change_active = ] change_active
Autorise la modification des colonnes dans les publications possédant des abonnements. @change_active est int, avec la valeur par défaut 0
.
- Si
0
, les colonnes ne sont pas modifiées. - Si
1
, les vues peuvent être créées ou recréées sur des articles actifs qui ont des abonnements.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Reconnaît que l’action effectuée par cette procédure stockée peut invalider un instantané existant. @force_invalidate_snapshot est bit, avec la valeur par défaut 0
.
0
spécifie que les modifications apportées à l’article n’entraînent pas l’invalidation de l’instantané. Si la procédure stockée détecte que la modification requiert un nouvel instantané, une erreur se produit et aucune modification n'est effectuée.1
spécifie que les modifications apportées à l’article peuvent rendre l’instantané non valide et, s’il existe des abonnements existants qui nécessitent un nouvel instantané, donne l’autorisation de marquer l’instantané existant comme obsolète et un nouvel instantané généré.
[ @force_reinit_subscription = ] force_reinit_subscription
Confirme que l'action entreprise par cette procédure stockée peut nécessiter la réinitialisation des abonnements existants. @force_reinit_subscription est bit, avec la valeur par défaut 0
.
0
spécifie que les modifications apportées à l’article n’entraînent pas la réinitialisation de l’abonnement. Si la procédure stockée détecte que la modification requiert la réinitialisation des abonnements, une erreur se produit et aucune modification n'est effectuée.1
spécifie que les modifications apportées à l’article entraînent la réinitialisation de l’abonnement existant et autorise la réinitialisation de l’abonnement.
[ @publisher = ] N’publisher'
Spécifie un serveur de publication non-SQL Server. @publisher est sysname, avec la valeur par défaut NULL
.
@publisher ne doit pas être utilisé lors de la publication à partir d’un serveur de publication SQL Server.
[ @refreshsynctranprocs = ] refreshsynctranprocs
Spécifie si les procédures stockées utilisées pour synchroniser la réplication sont recréées automatiquement. @refreshsynctranprocs est bit, avec la valeur par défaut 1
.
1
signifie que les procédures stockées sont recréées.0
signifie que les procédures stockées ne sont pas recréées.
[ @internal = ] interne
Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
Valeurs des codes de retour
0
(réussite) or 1
(échec).
Notes
sp_articleview
crée la vue qui définit l’article publié et insère l’ID de cette vue dans la colonne de la sync_objid
table sysarticles et insère le texte de la clause de restriction dans la filter_clause
colonne. Si toutes les colonnes sont répliquées et qu’il n’y a pas filter_clause
, la sync_objid
table sysarticles est définie sur l’ID de la table de base et l’utilisation de sp_articleview
celle-ci n’est pas requise.
Pour publier une table filtrée verticalement (autrement dit, pour filtrer les colonnes), exécutez sp_addarticle
d’abord sans paramètre @sync_object , exécutez sp_articlecolumn une fois pour chaque colonne à répliquer (définissant le filtre vertical), puis exécutez sp_articleview
pour créer la vue qui définit l’article publié.
Pour publier une table filtrée horizontalement (autrement dit, pour filtrer les lignes), exécutez sp_addarticle sans paramètre de @filter_name . Exécutez sp_articlefilter, en fournissant tous les paramètres, notamment @filter_clause. Exécutez sp_articleview
ensuite, en fournissant tous les paramètres, y compris les @filter_clause identiques.
Pour publier une table filtrée verticalement et horizontalement, exécutez sp_addarticle sans paramètres @sync_object ni @filter_name . Exécutez sp_articlecolumn une fois pour chaque colonne à répliquer, puis exécutez sp_articlefilter et sp_articleview
.
Si l’article a déjà une vue qui définit l’article publié, sp_articleview
supprime l’affichage existant et en crée un automatiquement. Si la vue a été créée manuellement (type
dans sysarticles ), 5
la vue existante n’est pas supprimée.
Si vous créez une procédure stockée de filtre personnalisée et une vue qui définit l’article publié manuellement, n’exécutez sp_articleview
pas . Au lieu de cela, fournissez ces valeurs en tant que paramètres @filter_name et @sync_object à sp_addarticle, ainsi que la valeur @type appropriée.
Exemples
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
autorisations
Seuls les membres du rôle serveur fixe sysadmin ou db_owner rôle de base de données fixe peuvent s’exécuter sp_articleview
.