Gérer les connexions à des géodatabases d’entreprise dans SQL Server

Disponible avec une licence Standard ou Advanced.

En tant qu'administrateur de géodatabase, vous devez parfois déterminer qui est connecté à la géodatabase et quelles connexions bloquent les ressources. Il se peut que vous deviez même supprimer certaines connexions en l’absence des personnes concernées qui ne peuvent pas se déconnecter elles-mêmes. Par exemple, si une session de mise à jour est restée ouverte, les données sont verrouillées et les autres utilisateurs ne peuvent pas y accéder. Lorsque le nombre de connexions pouvant être établies à une géodatabase est limité, vous devez éventuellement déconnecter un utilisateur toujours en ligne pour libérer une connexion. Vous pouvez également demander à tous les utilisateurs de se déconnecter pour appliquer un correctif à la base de données, la restaurer ou encore compresser la géodatabase.

Vous pouvez vous connecter à la géodatabase en tant qu’administrateur de la géodatabase depuis ArcGIS Pro pour afficher et, si nécessaire, supprimer les connexions. Vous pouvez également utiliser les fonctions ArcPy pour effectuer le même processus.

Attention :

Soyez prudent lorsque vous déconnectez les utilisateurs. Esri recommande d’éviter de déconnecter des sessions actives, notamment si l’utilisateur connecté est en train de mettre à jour des données. Vous ne devez déconnecter que des sessions laissées ouvertes mais non utilisées (par exemple, si un utilisateur a laissé sa session ouverte quand il est parti en week-end), les sessions orphelines qui verrouillent un objet ou les sessions bloquées.

Pour déconnecter des utilisateurs d’une géodatabase d’entreprise dans Microsoft SQL Server, l’administrateur de géodatabase peut avoir besoin de privilèges supplémentaires.

  • L’administrateur de géodatabase d’une géodatabase de structure sde doit détenir des privilèges VIEW DEFINITION sur la base de données pour voir la liste des utilisateurs connectés ; il doit également être membre du rôle de serveur fixe processadmin pour déconnecter des utilisateurs.
  • Si l'administrateur de géodatabase d'une géodatabase de structure dbo est le propriétaire de la base de données, il doit être ajouté au rôle de serveur fixe processadmin pour déconnecter des utilisateurs.
Aucun privilège supplémentaire n'est requis pour l'administrateur de géodatabase d'une géodatabase de structure dbo s'il est membre du rôle de serveur fixe sysadmin.

En premier lieu, déterminez qui est connecté à la géodatabase. Si nécessaire, vous pouvez ensuite supprimer les connexions.

Identifier et supprimer des connexions dans ArcGIS Pro

Vous pouvez vous connecter à la géodatabase en tant qu’administrateur de géodatabase dans ArcGIS Pro pour afficher des connexions à partir de la boîte de dialogue Geodatabase Administration (Administration de géodatabase).

  1. Démarrez ArcGIS Pro.
  2. Connectez-vous à la géodatabase en tant qu'administrateur de géodatabase.
  3. Cliquez avec le bouton droit sur la connexion à la base de données et cliquez sur Administration > Connections (Connexions).

    La liste de toutes les sessions actuellement connectées à la géodatabase s'affiche. Votre session apparaît en italique.

  4. Contactez les utilisateurs pour leur demander de fermer leurs sessions. Si vous ne réussissez pas à les joindre et si vous devez absolument les déconnecter de la géodatabase, procédez comme suit.
  5. Cliquez avec le bouton droit sur la session que vous souhaitez supprimer de la géodatabase, puis sélectionnez Déconnecter.

    La session est immédiatement supprimée de la géodatabase.

  6. Fermez la boîte de dialogue Administration de la géodatabase.

Identifier et supprimer des connexions à l’aide de Python

Vous pouvez exécuter des fonctions Python pour créer un fichier de connexion à une base de données pour l’administrateur de la géodatabase, utiliser ce fichier de connexion pour vous connecter à la géodatabase et obtenir la liste des connexions à la géodatabase actuelles, et supprimer une connexion de la géodatabase, le cas échéant.

  1. Créez un fichier de connexion à une base de données en exécutant la fonction CreateDatabaseConnection_management dans une fenêtre Python.

    Dans cet exemple, un fichier de connexion (ssgdb.sde) est créé dans le dossier temporaire. La connexion est établie à la base de données gisprod sur l’instance SQL Server sdept4 et l’identifiant de connexion est sa.

    import arcpy
    arcpy.CreateDatabaseConnection_management ("c:\\temp","ssgdb.sde","SQL_SERVER","sdept4","DATABASE_AUTH","sa","esayP@ss","SAVE_USERNAME","gisprod")

  2. Exécutez la fonction ListUsers pour obtenir une liste des connexions actives à la géodatabase gisprod.

    Indiquez le fichier de connexion que vous avez créé à l’étape précédente.

    ##No need to import arcpy if you are running functions in the same Python window.
    import arcpy
    
    arcpy.ListUsers("c:\\temp\ssgdb.sde")

    Une liste des connexions utilisateur est renvoyée.

    [user(ClientName=u'PC4', ConnectionTime=datetime.datetime(2018, 10, 18, 8, 30, 19),
     ID=18, IsDirecConnection=True, Name=u'PUBLISHER1')]
    [user(ClientName=u'PC25', ConnectionTime=datetime.datetime(2018, 10, 21, 14, 10, 43),
     ID=33, IsDirecConnection=True, Name=u'EDITOR2')]
    [user(ClientName=u'PC11', ConnectionTime=datetime.datetime(2018, 10, 22, 9, 18, 26),
     ID=39, IsDirecConnection=True, Name=u'READER5')]
    [user(ClientName=u'PCA2', ConnectionTime=datetime.datetime(2018, 10, 22, 11, 21, 2),
     ID=41, IsDirecConnection=True, Name=u'DBO')]

  3. Contactez les utilisateurs pour leur demander de fermer leurs sessions. Si vous ne réussissez pas à les joindre et si vous devez absolument les déconnecter de la géodatabase, procédez comme suit.
  4. Utilisez les informations obtenues par la fonction ListUsers pour identifier la connexion à supprimer via la fonction DisconnectUser.

    Spécifiez l'ID de la connexion à supprimer. Dans ce cas, la connexion associée à l'ID 33 est supprimée :

    ##No need to import arcpy if you are running functions in the same Python window.
    import arcpy
    
    arcpy.DisconnectUser("c:\\temp\ssgdb.sde",33)

    La session est immédiatement supprimée de la géodatabase.