Nous mettrons à jour notre Politique de confidentialité prochainement. En voici un aperçu.

SQL Server 2016 : La réplication

Comprendre l'option Not for replication

Testez gratuitement nos 1341 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Découvrez ce que l'option Not for replication signifie. Voyez comment utiliser pour les clés primaires et les différentes contraintes.
06:00

Transcription

Avant d'aborder la réplication de fusion, j'aimerais vous parler d'une fonctionnalité qui est cachée mais que vous verrez peut-être apparaitre dans le script de création des tables, par exemple. Alors, je vous montre. J'ai maintenant, on le sait, une réplication transactionnelle sur la table « contact » notamment. Je vais prendre cette table contact dans sa base source « pachaDataFormation » et regardez ce qui se passe dans sa structure. « Contact.Contact », je fais un « clic-droit », je dis « Générer un script de la table en tant que CREATE », dans une nouvelle fenêtre d'éditeur de requête, et vous voyez que ma table contact a la colonne « ContactId » qui est « IDENTITY », c'est une clé primaire. « IDENTITY », cela veut dire bien sûr qu'elle est auto-incrémentale, c'est le système qui va incrémenter la valeur et on dit qu'elle est « IDENTITY NOT FOR REPLICATION ». Ça veut dire que cet « IDENTITY» ne concerne pas les données qui vont être répliquées. « NOT FOR REPLICATION », c'est un mot-clé qui va être utilisé sur des colonnes « IDENTITY », également sur des contraintes, clés étrangères, contrainte-check, également peut créé des triggers, « NOT FOR REPLICATION ». Ça veut dire simplement que si un objet comme un trigger ou une contrainte-check est indiquée « NOT FOR REPLICATION », elle ne va pas se déclencher dans une base abonnée quand il s'agit d'une copie de réplication. Je vais vous montrer ce que ça veut dire pour la contrainte « IDENTITY ». Ce sera plus clair. Je vous ai préparé ici un « INSERT » dans « dbo.Contact», dans « PachaAbonné02», je vais sur ma base « PachaAbonné02» et je vais essayer de faire une insertion directement sur une table qui est répliquée. Alors, on est sur l'abonné, on est d'accord. Donc pourquoi est ce que j'essaie de faire une insertion, est ce que c'est même possible ? Oui c'est possible, il n'y a pas de contrainte spécifique sur la table, elle n'est pas marquée en lecture seule, donc toute personne pourrait ajouter ou modifier des donnés. C'est pas une bonne idée, on est d'accord parce que ces données vont être probablement écrasées et puis ça n'a pas de sens, mais on va essayer de le faire quand même. Vous noterez que j'insère « contact », donc je créer une nouvelle ligne et je ne mets que le « Titre», le « Nom», le « Prénom» et « l'Email» et je n'ai pas mis le « ContatId». De toute façon je ne peux pas le mettre parce que dans « PachaAbonné02 », si je regarde la structure de la table contact, c'est la même, c'est un « IDENTITY». Donc la valeur doit être automatiquement générée, mais j'ai un « NOT FOR REPLICATION», c'est ici que c'est important. Alors j'essaie d'insérer et on va me dire, ah bah non, violation de la clé primaire, donc je vous agrandis un peu ça, on ne peut pas insérer une clé en double dans l'objet « contact », la valeur de clé dupliquée est « 2 ». Alors pourquoi « 2 »? Parce que j'ai déjà fait un essai avant d'enregistrer un vidéo sur « 1 », « 1 »est déjà utilisé, donc ça veux dire que la « IDENTITY » dans cette base est repartie à « 1 », donc c'est assez normal, il essaie d'insérer des valeurs à partir d’une valeur auto-incrémentale qui a commencé à « 1 » Il n'a pas pris en compte l'auto-incrément qui venait de la base de l'éditeur, ça c'est normal. Par contre, vous voyez qu'il essaie bien d'intégrer « l’IDENTITY ». Par contre si je vais dans « PachaDataFormation », alors c'est pas dans le même schéma, il faut que je change que j'insère dans « Contact. Contact ». Et je vais récupérer la valeur d'IDENTITY en utilisant une fonction qui s'appelle « SCOPE_IDENTITY », qui me retourne, eh bien la dernière valeur d'un IDENTITY inséré, ce sera ici. Alors, je suis au bon endroit, je fais mon insère, alors j'ai un problème « d'AdressePostaleId » qui ne peut pas être nulle, je vais mettre un « 1 » en espérant que ça passe, il faut qu'il existe bien sûr de l'autre côté, c'est bien, et je fais un « SELECT SCOPE IDENTITY » et j'ai oublié de rajouter les virgules. C'est une fonction niladique, elle ne prend pas de paramètres, mais parfois dans le langage transactSQL, il y a certaines fonctions niladiques qui viennent de la norme et qui ne prennent pas de parenthèses et d'autres qui sont du « transactSQL » et qui prennent des parenthèses. Bon courage à vous. Donc « 20085 », je prends ça et je vais regarder de l'autre côté dans « PachaAbonné02 » si j'ai bien un contact. Il n'est pas encore là, il n'est pas encore là parce que j'ai pas mis le sexe, j'y vais et je vais mettre un sexe féminin. J'ai oublié ça. Voilà qui est mieux. Vous vous souvenez, j'ai filtré. Maintenant je récupère mon « SCOPE_IDENTITY», « 20086» que voici et je me retrouve ici, avec « Adélaïde Merovingien en 20086 ». C'est bon, j'ai mon sexe. Vous noterez que c'est bien 20086, ça veut dire que grâce au « NOT FOR REPLICATION », l'IDENTITY a été généré dans la base de l'éditeur, mais ensuite lorsqu'on a copié cette valeur et qu'on a fait une insertion de l'autre côté, on a bien dit, eh bien ne génère pas un « IDENTITY » spécifique sinon il aurait essayé de créer un ID numéro trois, comme on l'a vu, si je fais une insertion directe. Mais comme l'insertion a passé par la réplication, eh bien ce numéro a été copié simplement sans que l'abonné essaie de le régénérer.

SQL Server 2016 : La réplication

Mettez en place une solution de réplication sur une plateforme SQL Server. Transférez ainsi aisément vos données entre des instances SQL Server.

1h22 (18 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :26 juil. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !