Créer un abonnement pour un Abonné non-SQL Server

S’applique à :SQL Server

Cette rubrique explique comment créer un abonnement pour un abonné non-SQL Server dans SQL Server à l’aide de SQL Server Management Studio ou de Transact-SQL. La réplication transactionnelle et instantané prend en charge la publication de données sur des abonnés non-SQL Server. Pour plus d'informations sur les plateformes d'Abonné prises en charge, consultez Non-SQL Server Subscribers.

Dans cette rubrique

Utilisation de SQL Server Management Studio

Pour créer un abonnement pour un abonné non-SQL Server :

  1. Installez et configurez les logiciels clients appropriés et les fournisseurs OLE DB sur le serveur de distribution SQL Server. Pour plus d'informations, consultez Oracle Subscribers et IBM DB2 Subscribers.

  2. Créez une publication avec l'Assistant Nouvelle publication. Pour plus d’informations sur la création de publications, consultez Créer une publication et Créer une publication à partir d’une base de données Oracle. Spécifiez les options suivantes dans l'Assistant Nouvelle publication :

    • Dans la page Type de publication , sélectionnez Publication d'instantané ou Publication transactionnelle.

    • Dans la page Agent d'instantané , désactivez Créer un instantané immédiatement.

      Vous créez l’instantané une fois la publication activée pour les abonnés non-SQL Server pour vous assurer que l’Agent d’instantané génère un instantané et des scripts d’initialisation appropriés pour les abonnés non-SQL Server.

  3. Activez la publication pour les abonnés non-SQL Server à l’aide de la boîte de dialogue Propriétés de publication - <Nom de> publication. Consultez Publication Properties, Subscription Options pour plus d'informations sur cette étape.

  4. Créez un abonnement avec l'Assistant Nouvel abonnement. Cette rubrique fournit des informations sur cette étape.

  5. (Facultatif) Modifiez la propriété d'article pre_creation_cmd pour conserver les tables sur l'Abonné. Cette rubrique fournit des informations sur cette étape.

  6. Générez un instantané de la publication. Cette rubrique fournit des informations sur cette étape.

  7. Synchronisez l'abonnement. Pour plus d’informations, consultez Synchroniser un abonnement par émission (push).

Pour activer une publication pour des Abonnés non-SQL Server

  1. Connecter au serveur de publication dans SQL Server Management Studio, puis développez le nœud du serveur.

  2. Développez le dossier Réplication , puis développez le dossier Publications locales .

  3. Cliquez avec le bouton droit sur la publication, puis sur Propriétés.

  4. Dans la page Options d'abonnement , sélectionnez la valeur True pour l'option Autoriser les Abonnés non-SQL Server. La sélection de cette option modifie un certain nombre de propriétés afin que la publication soit compatible avec les abonnés non-SQL Server.

    Remarque

    Le choix de la valeur True définit alors la valeur de l'article pre_creation_cmd à « drop ». Ce paramètre indique que la réplication doit supprimer une table au niveau de l'Abonné si elle correspond au nom de la table dans l'article. Si vous disposez de tables existantes au niveau de l'Abonné que vous souhaitez conserver, utilisez la procédure stockée sp_changearticle pour chaque article ; précisez une valeur 'none' pour pre_creation_cmd: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. Cliquez sur OK. Vous êtes invité à créer un nouvel instantané de la publication. Si vous ne souhaitez pas le faire immédiatement, vous utiliserez plus tard la procédure décrite plus loin dans la prochaine procédure.

Pour créer une publication destinée à un Abonné non-SQL Server

  1. Développez le dossier Réplication , puis développez le dossier Publications locales .

  2. Cliquez avec le bouton droit sur la publication appropriée, puis sur Nouveaux abonnements.

  3. Dans la page Emplacement de l'Agent de distribution , vérifiez que Exécuter tous les agents sur le serveur de distribution est bien sélectionné. Les abonnés non-SQL Server ne prennent pas en charge l’exécution d’agents sur l’Abonné.

  4. Dans la page Abonnés , cliquez sur Ajouter un Abonné puis sur Ajouter un Abonné non-SQL Server.

  5. Dans la boîte de dialogue Ajouter un Abonné non-SQL Server , sélectionnez le type d'Abonné.

  6. Entrez une valeur dans Nom de la source de données:

    • Pour Oracle, cette valeur est le nom du TNS (transparent network substrate) que vous avez configuré.

    • Pour IBM, ce peut être n'importe quel nom. En règle générale, spécifiez l'adresse réseau de l'Abonné.

    Le nom de la source de données entré à cette étape et les informations de connexion spécifiées à l'étape 9 ne sont pas validés par cet Assistant. Ils ne sont pas utilisés par la réplication avant que l'Agent de distribution ne s'exécute pour l'abonnement. Assurez-vous que toutes les valeurs ont été testées en vous connectant à l'Abonné à l'aide d'un outil client (par exemple sqlplus pour Oracle). Pour plus d'informations, consultez Oracle Subscribers et IBM DB2 Subscribers.

  7. Cliquez sur OK. Dans la page Abonnés de l'Assistant, l'Abonné s'affiche maintenant dans la colonne Abonné avec une (destination par défaut) en lecture seule dans la colonne Base de données d'abonnement :

    • Sur Oracle, un serveur a au plus une base de données, il n'est donc pas nécessaire de la spécifier.

    • Pour IBM DB2, la base de données est spécifiée dans la propriété Catalogue initial de la chaîne de connexion DB2, qui peut être entrée dans le champ Options de connexion supplémentaires décrit plus loin.

  8. Dans la page Sécurité de l'Agent de distribution , cliquez sur le bouton de propriétés () à côté de l'Abonné pour accéder à la boîte de dialogue Sécurité de l'Agent de distribution .

  9. Dans la boîte de dialogue Sécurité de l'Agent de distribution :

    • Dans les champs Compte de processus, Mot de passe et Confirmer le mot de passe, entrez le compte Microsoft Windows et le mot de passe sous lesquels le Agent de distribution doit s’exécuter et établir des connexions locales au serveur de distribution.

      Ce compte a besoin des autorisations minimales suivantes : membre du rôle de base de données fixe db_owner dans la base de données de distribution ; membre de la PAL (liste d'accès à la publication) ; autorisations de lecture sur le partage de fichiers d'instantanés ; et autorisation de lecture sur le répertoire d'installation du fournisseur OLE DB. Pour plus d’informations sur la liste d’accès à la publication, consultez Sécuriser le serveur de publication.

    • Sous Connexion à l'Abonné, dans les champs Connexion, Mot de passeet Confirmer le mot de passe , entrez la connexion et le mot de passe à utiliser pour se connecter à l'Abonné. Cette connexion devrait déjà être configurée et devrait avoir des autorisations suffisantes pour créer des objets dans la base de données d'abonnement.

    • Dans le champ Options de connexion supplémentaires , spécifiez les autres options de connexion pour l'Abonné sous la forme d'une chaîne de connexion (Oracle ne nécessite pas d'options supplémentaires). Chaque option doit être délimitée par un point-virgule. Voici un exemple de chaîne de connexion DB2 (les retours à la ligne facilitent la lisibilité) :

      Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
      PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
      Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
      Persist Security Info=False;Connection Pooling=True;  
      

      La plupart des options de cette chaîne sont spécifiques du serveur DB2 que vous configurez, mais vous devez attribuer à l'option Traiter les données binaires comme des caractères la valeur False. Une valeur est exigée de façon que l'option Catalogue initial identifie la base de données d'abonnement.

  10. Dans la page Planification de synchronisation , sélectionnez une planification pour l'Agent de distribution à partir du menu Planification de l'agent (en règle générale, Exécuter en continu).

  11. Dans la page Initialiser les abonnements , spécifiez si l'abonnement doit être initialisé et, dans ce cas, quand l'initialiser :

    • Ne désactivez Initialiser que si vous avez créé tous les objets et ajouté toutes les données nécessaires dans la base de données d'abonnement.

    • Sélectionnez Immédiatement dans la liste déroulante de la colonne À quel moment pour que l'Agent de distribution transfère les fichiers d'instantanés à l'Abonné lorsque l'Assistant se termine. Sélectionnez Lors de la première synchronisation pour que l'Agent transfère les fichiers lors de la prochaine exécution planifiée de l'Agent.

  12. Sur la page Actions de l'Assistant , scriptez en option l'abonnement. Pour plus d'informations, voir Scripting Replication.

Pour conserver les tables sur l'Abonné

  • Par défaut, l’activation d’une publication pour les abonnés non-SQL Server définit la valeur de la propriété d’article pre_creation_cmd sur « drop ». Ce paramètre indique que la réplication doit supprimer une table au niveau de l'Abonné si elle correspond au nom de la table dans l'article. Si vous disposez de tables existantes au niveau de l'Abonné que vous souhaitez conserver, utilisez la procédure stockée sp_changearticle pour chaque article ; précisez une valeur 'none' pour pre_creation_cmd. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

Pour générer un instantané de la publication

  1. Développez le dossier Réplication , puis développez le dossier Publications locales .

  2. Cliquez avec le bouton droit sur la publication, puis cliquez sur Afficher l'état de l'Agent d'instantané.

  3. Dans la boîte de dialogue Afficher l’état de l’agent d’instantané - <Publication> , cliquez sur Démarrer.

Lorsque l'Agent d'instantané a terminé, un message s'affiche, par exemple, « [100%] Un instantané de 17 articles a été généré. »

Utilisation de Transact-SQL

Vous pouvez créer des abonnements push vers des abonnés non-SQL Server par programmation à l’aide de procédures stockées de réplication.

Important

Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution. Si vous devez enregistrer les informations d'identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher un accès non autorisé.

Pour créer un abonnement par émission de données pour une publication transactionnelle ou d'instantané pour un Abonné non-SQL Server

  1. Installez le fournisseur OLE DB le plus récent pour l’abonné non-SQL Server sur le serveur de publication et le serveur de distribution. Pour connaître les spécifications de réplication pour un fournisseur OLE DB, consultez Non-SQL Server Subscribers, Oracle Subscribers, IBM DB2 Subscribers.

  2. Dans la base de données de publication sur le serveur de publication, vérifiez que la publication prend en charge les abonnés non-SQL Server en exécutant sp_helppublication (Transact-SQL).

    • Si la valeur de enabled_for_het_sub est 1, les abonnés non-SQL Server sont pris en charge.

    • Si la valeur de enabled_for_het_sub est 0, exécutez sp_changepublication (Transact-SQL), en spécifiant enabled_for_het_sub pour @property et true pour @value.

      Remarque

      Avant de remplacer la valeur de enabled_for_het_sub par true, vous devez supprimer tout abonnement existant à la publication. Vous ne pouvez pas affecter la valeur enabled_for_het_sub à true lorsque la publication prend également en charge la mise à jour des abonnements. La modification de enabled_for_het_sub affectera d'autres propriétés de publication. Pour plus d’informations, consultez Non-SQL Server Subscribers.

  3. Sur le serveur de publication sur la base de données de publication, exécutez sp_addsubscription (Transact-SQL). Spécifiez @publication, @subscriber, la valeur (default destination) pour @destination_db, la valeur push pour @subscription_type et la valeur 3 pour @subscriber_type (spécifie un fournisseur OLE DB).

  4. Sur le serveur de publication sur la base de données de publication, exécutez sp_addpushsubscription_agent (Transact-SQL). Spécifiez les détails suivants :

    • Les paramètres @subscriber et @publication.

    • La valeur (destination par défaut) pour @subscriber_db.

    • Propriétés de la source de données non-SQL Server pour @subscriber_provider, , @subscriber_location@subscriber_datasrc, @subscriber_provider_string, et @subscriber_catalog.

    • Informations d’identification Microsoft Windows sous lesquelles le Agent de distribution sur le serveur de distribution s’exécute pour @job_login et @job_password.

    Remarque

    Les connexions effectuées à l’aide de l’authentification Windows intégrée utilisent toujours les informations d’identification Windows spécifiées par @job_login et @job_password. L'Agent de distribution crée toujours la connexion locale au serveur de distribution à l'aide de l'authentification intégrée Windows. Par défaut, l'agent se connecte à l'Abonné à l'aide de ces informations.

    • La valeur 0 pour @subscriber_security_mode et les informations de connexion du fournisseur OLE DB pour @subscriber_login et @subscriber_password.

    • Planification du travail de l'Agent de distribution pour cet abonnement. Pour plus d’informations, consultez Spécifier des planifications de synchronisation.

    Important

    Lors de la création d'un abonnement par émission de données sur un serveur de publication avec un serveur de distribution distant, les valeurs fournies pour tous les paramètres, y compris job_login et job_password, sont envoyées au serveur de distribution en texte brut. Vous devez chiffrer la connexion entre le serveur de publication et son serveur de distribution distant avant d'exécuter cette procédure stockée. Pour plus d’informations, consultez Activer des connexions chiffrées dans le moteur de base de données (Gestionnaire de configuration SQL Server).

Voir aussi

Abonnés IBM DB2
Abonnés Oracle
Autres abonnés non SQL Server
Concepts liés aux procédures stockées système de réplication
Bonnes pratiques en matière de sécurité de la réplication