sp_articleview (Transact-SQL)

S’applique à :SQL ServerAzure 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_instantané

Reconnaît que l’action effectuée par cette procédure stockée peut invalider une instantané existante. @force_invalidate_instantané est bit, avec la valeur par défaut 0.

  • 0spécifie que les modifications apportées à l’article n’entraînent pas l’instantané non valide. 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.
  • 1spécifie que les modifications apportées à l’article peuvent entraîner l’instantané non valide et, si des abonnements existants nécessitent un nouveau instantané, donnent l’autorisation à l’instantané existante d’être marquée comme obsolète et qu’une nouvelle instantané générée.

[ @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) ou 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 sync_objid colonne de la table sysarticles (Transact-SQL) 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_objidtable sysarticles (Transact-SQL) est définie sur l’ID de la table de base et l’utilisation n’est sp_articleview pas nécessaire.

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 (Transact-SQL) 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 (Transact-SQL) sans paramètre @filter_name . Exécutez sp_articlefilter (Transact-SQL) en fournissant tous les paramètres, notamment @filter_clause. Exécutez sp_articleviewensuite, 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 (Transact-SQL) sans @sync_object ni aucun paramètre @filter_name. Exécutez sp_articlecolumn (Transact-SQL) une fois pour chaque colonne à répliquer, puis exécutez sp_articlefilter (Transact-SQL) 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 (Transact-SQL) est 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_articleviewpas . Au lieu de cela, fournissez ces valeurs en tant que paramètres @filter_name et @sync_object à sp_addarticle (Transact-SQL), 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.