Publication de données et d'objets de base de données
Mis à jour : 14 avril 2006
Lors de la création d'une publication, vous choisissez les tables et les autres objets de base de données à publier. Vous pouvez publier les objets de base de données suivants à l'aide de la réplication.
Objet de base de données | Réplication de capture instantanée et réplication transactionnelle | Réplication de fusion |
---|---|---|
Tables |
X |
X |
Tables partitionnées |
X |
X |
Procédures stockées – Définition (Transact-SQL et CLR) |
X |
X |
Procédures stockées – Exécution (Transact-SQL et CLR) |
X |
non |
Vues |
X |
X |
Vues indexées |
X |
X |
Vues indexées comme des tables |
X |
non |
Types définis par l'utilisateur (CLR) |
X |
X |
Fonctions définies par l'utilisateur (Transact-SQL et CLR) |
X |
X |
Types de données alias |
X |
X |
Index de texte intégral |
X |
X |
Objets de schéma (contraintes, index, déclencheurs DML utilisateur, propriétés étendues et classement) |
X |
X |
Création de publications
Pour créer une publication, vous fournissez les informations suivantes :
- Le serveur de distribution.
- L'emplacement des fichiers de capture instantanée.
- La base de données de publication.
- Le type de publication à créer (capture instantanée, transactionnelle, transactionnelle avec abonnements pouvant être mis à jour ou fusion).
- les données et les objets de base de données (articles) à inclure à la publication ;
- Filtres de lignes statiques et filtres de colonnes statiques pour tous les types de publications, et filtres de lignes paramétrés et filtres de jointure pour les publications de fusion.
- La planification de l'Agent de capture instantanée.
- Les comptes sous lesquels les agents suivants s'exécutent : l'Agent de capture instantanée pour toutes les publications ; l'Agent de lecture du journal pour toutes les publications transactionnelles ; l'Agent de lecture de la file d'attente pour les publications transactionnelles qui autorisent les abonnements pouvant être mis à jour.
- un nom et une description pour la publication ;
Pour créer des publications et définir des articles
- Microsoft SQL Server Management Studio: Procédure : créer une publication et définir des articles (SQL Server Management Studio)
- Programmation Transact-SQL de la réplication : How to: Create a Publication (Replication Transact-SQL Programming) et How to: Define an Article (Replication Transact-SQL Programming)
- Programmation RMO (Replication Management Objects) : How to: Create a Publication (RMO Programming) et How to: Define an Article (RMO Programming)
Pour modifier des publications et des articles
- SQL Server Management Studio: Procédure : Affichage et modification des propriétés de l'article et de la publication (SQL Server Management Studio)
- Programmation Transact-SQL de la réplication : How to: View and Modify Publication Properties (Replication Transact-SQL Programming) et How to: View and Modify Article Properties (Replication Transact-SQL Programming)
- Programmation RMO (Replication Management Objects) : How to: View and Modify Publication Properties (RMO Programming) et How to: View and Modify Article Properties (RMO Programming)
Pour supprimer des publications et des articles
- SQL Server Management Studio: Procédure : supprimer une publication (SQL Server Management Studio)
- Programmation Transact-SQL de la réplication : How to: Delete a Publication (Replication Transact-SQL Programming) et How to: Delete an Article (Replication Transact-SQL Programming)
- Programmation RMO (Replication Management Objects) : How to: Delete an Article (RMO Programming)
Remarque : |
---|
La suppression d'un article ou d'une publication ne supprime pas les objets sur l'Abonné. |
Publication de tables
L'objet le plus couramment publié est une table. Les liens suivants donnent des informations supplémentaires sur les éléments relatifs à la publication des tables :
- Filtrage des données publiées
- Options d'articles pour la réplication transactionnelle
- Options d'articles pour la réplication de fusion
- Réplication de colonnes d'identité
Lors de la publication d'une table pour la réplication, vous pouvez spécifier les objets de schéma qui doivent être copiés vers l'Abonné, tels que l'intégrité référentielle déclarée (contraintes de clé primaire, contraintes référentielles, contraintes uniques), des index, des déclencheurs DML utilisateur (des déclencheurs DDL qui ne peuvent pas être répliqués), des propriétés étendues et des classements. Les propriétés étendues sont répliquées uniquement dans la synchronisation initiale entre le serveur de publication et l'Abonné. Si vous ajoutez ou modifiez une propriété étendue après la synchronisation initiale, la modification n'est pas répliquée.
Pour spécifier des options de schéma
- SQL Server Management Studio: Procédure : spécifier des options de schéma (SQL Server Management Studio)
- Programmation Transact-SQL de la réplication : How to: Specify Schema Options (Replication Transact-SQL Programming)
- Programmation RMO : SchemaOption
Tables et index partitionnés
Lorsque des tables ou index partitionnés sont publiés, les objets suivants sont copiés vers chaque Abonné :
Objet | Créé avec… |
---|---|
Table ou index partitionné |
CREATE TABLE ou CREATE INDEX |
Fonction de partition |
CREATE PARTITION FUNCTION |
Schéma de partition |
CREATE PARTITION SCHEME |
L'instance de l'Abonné doit déjà contenir les groupes de fichiers dans lesquels les tables partitionnées seront placées. Une fois l'Abonné initialisé, les modifications de données sont propagées à l'Abonné et appliquées aux partitions appropriées. SQL Server ne prend pas en charge les modifications apportées aux tables et index partitionnés qui font l'objet d'une réplication : vous ne pouvez pas appeler ALTER PARTITION FUNCTION ou ALTER PARTITION SCHEME, de même que vous ne pouvez pas utiliser l'instruction SWITCH PARTITION de ALTER TABLE ou l'instruction REBUILD WITH PARTITION de ALTER INDEX.
Publication de procédures stockées
Tous les types de réplication vous permettent de répliquer des définitions de procédure stockée : le CREATE PROCEDURE est copié vers chaque Abonné. Dans le cas de procédures stockées CLR (Common Language Runtime), l'assembly associé est également copié. Les modifications des procédures sont répliquées vers les Abonnés ; les modifications des assemblys associés ne le sont pas.
En plus de répliquer la définition d'une procédure stockée, la réplication transactionnelle vous permet de répliquer l'exécution des procédures stockées. Ceci est particulièrement utile lors de la réplication des résultats de procédures stockées de maintenance qui affectent de gros volumes de données. Pour plus d'informations, consultez Publication de l'exécution de procédures stockées dans la réplication transactionnelle.
Publication de vues
Tous les types de réplication vous permettent de répliquer des vues. La vue (et l'index qui l'accompagne s'il s'agit d'une vue indexée) peut être copiée vers l'Abonné, mais la table de base doit aussi être répliquée.
Pour les vues indexées, la réplication transactionnelle vous permet aussi de répliquer la vue indexée en tant que table et non pas en tant que vue, éliminant ainsi la nécessité de répliquer aussi la table de base. Pour cela, spécifiez une des options « indexed view logbased » pour le paramètre @type de sp_addarticle (Transact-SQL). Pour plus d'informations sur l'utilisation de sp_addarticle, consultez How to: Define an Article (Replication Transact-SQL Programming).
Publication de fonctions définies par l'utilisateur
Les instructions CREATE FUNCTION pour les fonctions CLR et pour les fonctions Transact-SQL sont copiées vers chaque Abonné. Dans le cas des fonctions CLR, l'assembly associé est également copié. Les modifications des fonctions sont répliquées vers les Abonnés ; les modifications aux assemblys associés ne le sont pas.
Publication de types définis par l'utilisateur et de types de données alias
Les colonnes qui utilisent des types définis par l'utilisateur et des types de données alias sont répliquées vers les Abonnés, tout comme les autres colonnes. L'instruction CREATE TYPE pour chaque type répliqué est exécutée sur l'Abonné avant que la table soit créée. Dans le cas de types définis par l'utilisateur, l'assembly associé est également copié vers chaque Abonné. Les modifications aux types définis par l'utilisateur et aux types de données alias ne sont pas répliquées vers les Abonnés.
Si un type est défini dans une base de données mais qu'il n'est référencé par aucune des colonnes quand une publication est créée, le type n'est pas copié vers les Abonnés. Si vous créez plus tard une colonne de ce type dans la base de données et que vous souhaitez la répliquer, vous devez d'abord copier manuellement le type (et l'assembly associé pour un type défini par l'utilisateur) vers chaque Abonné.
Publication d'index de texte intégral
L'instruction CREATE FULLTEXT INDEX est copiée vers chaque Abonné, et l'index de texte intégral est créé sur l'Abonné. Les modifications apportées aux index de texte intégral à l'aide de ALTER FULLTEXT INDEX ne sont pas répliquées.
Modifications de schéma pour des objets publiés
La réplication prend en charge une grande variété de modifications de schéma pour les objets publiés. Quand vous effectuez une des modifications de schéma suivantes sur l'objet publié approprié sur un Abonné SQL Server, cette modification est propagée par défaut à tous les Abonnés SQL Server :
- ALTER TABLE
- ALTER VIEW
- ALTER PROCEDURE
- ALTER FUNCTION
- ALTER TRIGGER
Pour plus d'informations, consultez Modification du schéma dans les bases de données de publication.
Considérations sur la publication
Soyez attentif aux problèmes suivants lors de la publication d'objets de base de données :
- La base de données est accessible aux utilisateurs lors de la création de la publication et de la capture instantanée initiale, mais il est conseillé de créer les publications à des moments où l'activité est faible sur le serveur de publication.
- Une base de données ne peut pas être renommée après qu'une publication y ait été créée. Pour la renommer, vous devez d'abord supprimer la réplication de la base de données. Pour plus d'informations, consultez Suppression de la réplication.
- Si vous publiez un objet de base de données qui dépend d'un ou de plusieurs autres objets de base de données, vous devez publier tous les objets référencés. Par exemple, si vous publiez une vue qui dépend d'une table, vous devez publier la table également.
Remarque : Si vous ajoutez un article à une publication de fusion et qu'un article existant dépend du nouvel article, vous devez spécifier un ordre de traitement pour les deux articles à l'aide du paramètre @processing_order de sp_addmergearticle et sp_changemergearticle. Examinez les cas suivants : vous publiez une table mais vous ne publiez pas une fonction référencée par la table. Si vous ne publiez pas la fonction, la table ne peut pas être créée au niveau de l'abonné. Lorsque vous ajoutez la fonction à la publication : spécifiez la valeur 1 pour le paramètre @processing_order de sp_addmergearticle, spécifiez la valeur 2 pour le paramètre @processing_order de sp_changemergearticle, et spécifiez le nom de la table pour le paramètre @article. Cet ordre de traitement permet de créer la fonction au niveau de l'abonné avant la table qui en dépend. Vous pouvez utiliser différents nombres pour chaque article tant que le nombre de la fonction est inférieur au nombre de la table. - Les noms de publication ne peuvent pas contenir les caractères suivants : % * [ ] | : " ? \ / < >.
Limitations de la publication d'objets
- Le nombre maximal d'articles et de colonnes publiables diffère selon le type de publication. Pour plus d'informations, consultez la section « Réplication d'objets » de Spécifications de capacités maximales pour SQL Server 2005.
- Les procédures stockées, les vues, les déclencheurs et les fonctions définies par l'utilisateur qui sont définies avec WITH ENCRYPTION ne peuvent pas être publiées comme composants d'une réplication SQL Server.
- Les collections de schémas XML peuvent être répliquées, mais les modifications ne sont pas répliquées après la capture instantanée initiale.
- Les tables publiées pour la réplication transactionnelle doivent avoir une clé primaire. Si une table est dans une publication de réplication transactionnelle, vous ne pouvez pas désactiver les index qui sont associés à des colonnes de clé primaire. Ces index sont requis par la réplication. Pour désactiver un index, vous devez d'abord supprimer la table de la réplication.
- Les valeurs par défaut liées créés avec sp_bindefault (Transact-SQL) ne sont pas répliqués (les valeurs par défaut liées sont abandonnés en faveur des valeurs par défaut créés avec le mot clé DEFAULT de ALTER TABLE ou CREATE TABLE).
Schémas et propriété des objets
La réplication fonctionne par défaut de la façon suivante dans l'Assistant Nouvelle publication quant aux schémas et à la propriété des objets :
- Pour les articles dans les publications de fusion avec un niveau de compatibilité de 90 ou supérieur, dans les publications de capture instantanée et dans les publications transactionnelles : par défaut, le propriétaire d'un objet sur l'Abonné est le même que le propriétaire de l'objet correspondant sur le serveur de publication. Si les schémas qui détiennent les objets n'existent pas sur l'Abonné, ils sont créés automatiquement.
- Pour les articles dans les publications de fusion avec un niveau de compatibilité inférieur à 90 : par défaut, le propriétaire est laissé à blanc et est spécifié en tant que dbo lors de la création de l'objet sur l'Abonné.
- Pour les articles dans les publications Oracle : par défaut, le propriétaire est spécifié en tant que dbo.
- Pour les articles dans les publications qui utilisent les captures instantanées en mode caractère (qui sont utilisées pour les Abonnées non-SQL Server et pour les Abonnés SQL Server 2005 Compact Edition) : par défaut, le propriétaire est laissé à blanc. Le propriétaire est par défaut le propriétaire associé au compte utilisé par l'Agent de distribution ou par l'Agent de fusion pour se connecter à l'Abonné.
Le propriétaire de l'objet peut être modifié via la boîte de dialogue Propriétés de l'article - <article> et via les procédures stockées suivantes : sp_addarticle, sp_addmergearticle, sp_changearticle et sp_changemergearticle. Pour plus d'informations, consultez Procédure : Affichage et modification des propriétés de l'article et de la publication (SQL Server Management Studio), How to: Define an Article (Replication Transact-SQL Programming) et How to: View and Modify Article Properties (Replication Transact-SQL Programming).
Publication de données sur les Abonnés exécutant des versions antérieures de SQL Server
- Si vous publiez sur un Abonné exécutant une version antérieure de SQL Server, vous êtes limité par les fonctionnalités de cette version, en termes de fonctionnalités spécifiques à la réplication et en termes de fonctionnalités globales du produit. Par exemple, vous ne pouvez pas publier des types de données définis par l'utilisateur ou des fonctions CLR sur les Abonnés exécutant SQL Server 2000.
- Les publications de fusion utilisent un niveau de compatibilité, qui détermine les fonctionnalités qui peuvent être utilisées dans une publication et qui vous permet de prendre en charge des Abonnés exécutant des versions antérieures de SQL Server.
Pour plus d'informations, consultez Utilisation de plusieurs versions de SQL Server dans une topologie de réplication.
Publication de tables dans plusieurs publications
La réplication prend en charge la publication d'articles dans plusieurs publications (y compris la réédition de données) avec les restrictions suivantes :
Si un article est publié dans une publication transactionnelle et dans une publication de fusion, vérifiez que la propriété @published_in_tran_pub est définie sur TRUE pour l'article de fusion. Pour plus d'informations sur la définition des propriétés, consultez Procédure : Affichage et modification des propriétés de l'article et de la publication (SQL Server Management Studio) et How to: View and Modify Article Properties (Replication Transact-SQL Programming).
Vous devez également définir la propriété @published_in_tran_pub si un article fait partie d'un abonnement transactionnel et qu'il est inclus dans une publication de fusion. Si tel est le cas, gardez à l'esprit que, par défaut, la réplication transactionnelle suppose que les tables sur l'Abonné soient traitées en tant qu'objets accessibles en lecture seule ; si la réplication de fusion apporte des modifications aux données d'une table dans un abonnement transactionnel, une non-convergence de données peut se produire. Pour éviter cette éventualité, il est recommandé de spécifier toute table de ce type en tant qu'objet en téléchargement seul dans la publication de fusion. Cela empêche un Abonné de fusion de télécharger les modifications apportées aux données de la table. Pour plus d'informations, consultez Optimisation des performances de la réplication de fusion avec les articles en téléchargement seul.Un article ne peut pas être publié à la fois dans une publication de fusion et dans une publication transactionnelle avec des abonnements mis à jour en file d'attente.
Les articles inclus dans les publications transactionnelles qui prennent en charge les abonnements mis à jour ne peuvent pas être republiés.
Si un article est publié dans plusieurs publications transactionnelles qui prennent en charge les abonnements mis à jour en attente, les propriétés suivantes doivent avoir la même valeur pour l'article dans toutes les publications :
Propriété Paramètre dans sp_addarticle Gestion de plages d'identités
@auto_identity_range (désapprouvé) et @identityrangemangementoption
Plage d'identités du serveur de publication
@pub_identity_range
Plage d'identités
@identity_range
Seuil de plage d'identités
@threshold
Pour plus d'informations sur ces paramètres, consultez sp_addarticle (Transact-SQL).
Si un article est publié dans plusieurs publications de fusion, les propriétés suivantes doivent avoir la même valeur pour l'article dans toutes les publications :
Propriété Paramètre dans sp_addmergearticle Suivi de colonne
@column_tracking
Options de schéma
@schema_option
Filtrage de colonnes
@vertical_partition
Options de chargement de l'Abonné
@subscriber_upload_options
Suivi des suppressions conditionnelles
@delete_tracking
Compensation d'erreur
@compensate_for_errors
Gestion de plages d'identités
@auto_identity_range (désapprouvé) et @identityrangemangementoption
Plage d'identités du serveur de publication
@pub_identity_range
Plage d'identités
@identity_range
Seuil de plage d'identités
@threshold
Options de partition
@partition_options
Diffusion de colonne de BLOB
@stream_blob_columns
Type de filtre
@filter_type(paramètre dans sp_addmergefilter)
Pour plus d'informations sur ces paramètres, consultez sp_addmergearticle (Transact-SQL) et sp_addmergefilter (Transact-SQL).
La réplication transactionnelle et la réplication de fusion non filtrée prennent en charge la publication d'une table dans plusieurs publications, puis les abonnements dans une table unique de la base de données d'abonnement (communément appelée un scénario de cumul (roll up)). Le cumul est souvent utilisé pour agréger en une seule table des sous-ensembles de données provenant de plusieurs emplacements sur un Abonné central. Les publications de fusion filtrées ne prennent pas en charge le scénario avec un Abonné central. Pour la réplication de fusion, le cumul est généralement mis en œuvre via une seule publication avec des filtres de lignes personnalisés. Pour plus d'informations, consultez Filtres de lignes paramétrés.
Voir aussi
Concepts
Ajout et suppression d'articles de publications existantes
Configuration de la distribution
Initialisation d'un abonnement
Suppression de la réplication
Création de scripts de réplication
Sécurisation du serveur de publication
Abonnement à des publications
Autres ressources
Implémentation de la réplication
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
14 avril 2006 |
|