Mise à jour de données versionnées dans SQL Server à l'aide de vues multi-versionnées et de SQL

Vous pouvez mettre à jour des données versionnées dans une géodatabase en modifiant une vue multi-versionnée créée sur les données.

Plusieurs procédures stockées sont installées avec ArcSDE pour vous aider à utiliser les vues multi-versionnées. Voici ces composants et leurs descriptions :

Procédure stockée

Objet

Syntaxe et description

create_version

Crée une nouvelle version de la géodatabase.

Modifiez toujours votre propre version distincte ; les vues multi-versionnées ne permettent pas à plusieurs éditeurs de modifier la même version.

EXEC {dbo | sde}.create_version '<parent_version>', '<child_version>', <name_rule>, <access>, '<description>'

  • <parent_version> : la version à partir de laquelle votre version est créée
  • <child_version> : le nom de la version que vous créez
  • <name_rule> : indique si le nom spécifié pour la version doit être accepté tel qu'il est fourni (2) ou si un nom unique doit être créé quand un nom dupliqué est spécifié (1)
  • <access> : niveau d'autorisation de la version : 0 pour Privé (seul le propriétaire de la version peut y accéder), 1 pour Public (tous les utilisateurs peuvent y accéder) ou 2 pour Protégé (le propriétaire de la version dispose des autorisations en lecture/écriture sur la version, mais toutes les autres personnes possèdent une autorisation en lecture seule)
  • <description> : un texte descriptif de la version enfant

set_current_version

Définit la version de géodatabase à laquelle vous souhaitez accéder.

EXEC {dbo | sde}.set_current_version '<version_name>'

  • <version_name> : la version que vous souhaitez modifier

edit_version

Démarre et arrête une session de mise à jour.

EXEC {dbo | sde}.edit_version '<version_name>',{1 | 2}

Spécifiez 1 pour démarrer la session de mise à jour. Spécifiez 2 pour l'arrêter.

delete_version

Supprime une version de géodatabase.

EXEC {dbo | sde}.delete_version '<version_name>'

Lorsque vous modifiez des tables versionnées par le biais de vues multi-versionnées, les modifications sont apportées dans les tables de deltas et les valeurs d'ID de ligne (identifiant d'objet) sont générées automatiquement pour les nouveaux enregistrements. Toutefois, contrairement à la mise à jour des données versionnées dans une session de mise à jour ArcGIS, aucune réconciliation de versions interne n'est réalisée avec ces mises à jour.

Un verrouillage exclusif est, en outre, placé sur l'état auquel la version fait référence lorsque vous démarrez une session de mise à jour sur une vue multi-versionnée. Par conséquent, il est vivement recommandé de ne pas utiliser les vues multi-versionnées pour mettre à jour la version DEFAULT ou toute version pouvant être soumise à une mise à jour ou une réconciliation simultanée par d'autres utilisateurs, car les conflits ne seront pas détectés et les verrouillages bloqueront les autres utilisateurs. Créez plutôt votre propre version pour la session de mise à jour des vues multi-versionnées.

AttentionAttention :
  • Les opérations de gestion des versions, telles que la réconciliation, la résolution de conflits et la réinjection, doivent être réalisées à l'aide du logiciel ArcGIS. Une gestion incorrecte des versions peut endommager la géodatabase lorsque vous utilisez les vues.
  • Veuillez également ne jamais utiliser les outils de système de gestion de base de données (SGBD) pour mettre à jour des champs d'ID de ligne (identifiant d'objet) gérés par ArcSDE dans la base de données. Ces champs d'identifiant d'objet sont attribués et gérés par la géodatabase et, par conséquent, ne doivent pas être modifiés à l'aide de SQL.
  • Ne mettez jamais à jour la version DEFAULT de la géodatabase à l'aide de SQL. Le démarrage d'une session de mise à jour sur une version permet d'obtenir un verrouillage exclusif sur l'état auquel la version fait référence. En verrouillant la version DEFAULT, vous empêchez les utilisateurs ArcGIS de se connecter à la géodatabase.

Les étapes suivantes vous expliquent comment créer une vue multi-versionnée, créer une version dans laquelle effectuer des modifications, définir la version à modifier, démarrer une session de mise à jour, effectuer des modifications à travers la vue multi-versionnée, arrêter la session de mise à jour, valider vos modifications dans la base de données et supprimer la version créée pour les modifications. Dans les exemples, la vue multi-versionnée créée pour effectuer les mises à jour sur la table est code_mv, tandis que la version créée et utilisée pour la mise à jour est mvedits.

ConseilConseil :

Souvenez-vous que le jeu de données que vous mettez à jour par le biais d'une vue multi-versionnée doit avoir été déjà inscrit comme versionné.

Étapes :
  1. Dans une invite de commande MS-DOS, exécutez l'utilitaire sdetable pour créer une vue multi-versionnée.
    sdetable –o create_mv_view –T code_mv –t code_enf 
    –i sde:sqlserver:myserver\ssinst –D code –u sarja –p not4u
  2. Vous pouvez utiliser la procédure create_version pour créer une version dans laquelle effectuer vos modifications.
    EXEC sde.create_version 'sde.DEFAULT', 'version2', 1, 2, 'version for my mv edits'
  3. Ouvrez une fenêtre de requête Transact SQL et exécutez la procédure stockée set_current_version.
    EXEC sde.set_current_version 'version2'
    RemarqueRemarque :

    Si vous ne définissez pas la version courante, vous verrez le dernier état de la version DEFAULT à chacune de vos requêtes. Si vous définissez la version courante, l'état est mis en cache et votre vue de la version que vous avez indiquée reste statique.

  4. Ouvrez une session de mise à jour en exécutant la procédure stockée edit_version et en spécifiant 1.
    EXEC sde.edit_version 'version2', 1

    La valeur 1 indique qu'une session de mise à jour doit être ouverte.

  5. Effectuez la première modification dans la vue multi-versionnée à l'aide de SQL.

    Dans cet exemple, un enregistrement existant est mis à jour.

    UPDATE code_mv 
    SET propowner = 'C. Industry' 
    WHERE vid = 2233
  6. Effectuez la modification suivante dans la vue multi-versionnée à l'aide de SQL.

    Dans cet exemple, un enregistrement est inséré à la table.

    INSERT INTO code_mv 
    (codenum, propowner) 
    VALUES (456, 'Anjo Badsu')
    ConseilConseil :

    Dans l'instruction INSERT, aucune valeur d'identifiant d'objet n'est spécifiée. La vue multi-versionnée obtient automatiquement le prochain identifiant d'objet disponible et l'insère pour l'enregistrement.

    Bien qu'il soit possible de versionner une table qui a uniquement été inscrite avec ArcSDE et qui possède une colonne d'identifiant d'objet gérée par l'utilisateur, cette opération n'est pas recommandée. Si vous le faites toutefois, vous devez fournir un identifiant d'objet avec les instructions INSERT, car la vue multi-versionnée ne peut pas générer de valeur à votre place.

  7. Arrêtez la session de mise à jour en exécutant la procédure stockée edit_version, mais spécifiez 2.
    EXEC sde.edit_version 'version2', 2

    La valeur 2 indique que la session de mise à jour doit être arrêtée.

  8. Une fois que vous avez terminé toutes les mises à jour, réconciliez et réinjectez les modifications par le biais d'ArcGIS Desktop, puis supprimez la version de géodatabase que vous avez créée à l'étape 2. Si vous décidez de ne pas conserver les modifications, vous pouvez également supprimer la version que vous avez créée à l'étape 2 sans réconcilier ni réinjecter les modifications.
    EXEC sde.delete_version 'version2'

Rubriques associées


2/28/2012