PostgreSQL のジオデータベースへの接続の管理

Standard または Advancedのライセンスで利用可能。

ジオデータベース管理者は、時々、ジオデータベースに接続しているユーザーや、リソースをロックしている接続を確認する必要があります。 接続解除する必要のあるユーザーが不在の場合、特定の接続を削除することが必要な場合もあります。 たとえば、ある編集者が編集中に ArcGIS Pro を開いたままにしたため、編集セッション中のデータがロックされ、他の編集者がそのデータにアクセスできなくなり、データ所有者がテーブルのスキーマを変更できなくなる場合があります。 または、データベースにパッチを適用したり、データベースを復元したり、ジオデータベースを圧縮したりするために、すべてのユーザーの接続を解除することが必要な場合もあります。

ArcGIS Pro から sde ユーザーとしてジオデータベースに接続して、接続を表示したり、必要に応じて接続を削除することができます。 または、ArcPy 関数を使用して同じワークフローを実行することもできます。

注意:

ユーザーを切断する場合は注意が必要です。 特に接続ユーザーが編集中である場合は、アクティブなセッションを切断しないようにします。 開かれたままで使用されていないセッション (たとえば、誰かが週末にかけてセッションを開いたままにした場合)、オブジェクトをロックしている参照されなくなったセッション、またはデッドロック状況に関わっているセッションのみを切断してください。

まず、ジオデータベースに接続しているユーザーを確認します。 必要に応じてそれらの接続を削除できます。

ArcGIS Pro での接続の確認と削除

ArcGIS Pro で sde としてジオデータベースに接続し、[ジオデータベース管理] ダイアログ ボックス内に接続を表示できます。

  1. ArcGIS Pro を起動します。
  2. sde ユーザーとしてジオデータベースに接続します。
  3. データベース接続を右クリックし、[管理] > [接続] をクリックします。

    現在ジオデータベースに接続しているすべてのセッションを示すリストが表示されます。 自分のセッションは、斜体のテキストで表示されます。

  4. 各ユーザーに連絡して、セッションを閉じるように要求します。 ユーザーと連絡が取れず、それでもそのユーザーをジオデータベースから切断する必要がある場合は、次の手順に進みます。
  5. ジオデータベースから削除する特定のセッションを右クリックし、[切断] をクリックします。

    セッションが、即座にジオデータベースから削除されます。

  6. [ジオデータベース管理] ダイアログ ボックスを閉じます。

ArcPy を使用した接続の確認と削除

ArcPy 関数を実行して、sde ユーザー用のジオデータベース接続ファイルを作成し、その接続ファイルを使用してジオデータベースに接続し、現在のすべてのジオデータベース接続を取得し、必要に応じてジオデータベースから接続を削除できます。

  1. Python ウィンドウで CreateDatabaseConnection_management 関数を実行して、データベース接続ファイルを作成します。 ユーザー名とパスワードをファイルに保存します。

    この例では、接続ファイル (pgdb.sde) を temp フォルダーに作成します。 sde ユーザーとしてログインし、データベース クラスター mydbc 上のジオデータベース pg1 に接続します。

    import arcpy
    arcpy.CreateDatabaseConnection_management ("c:\\temp", "pgdb.sde", "POSTGRESQL", "mydbc", "DATABASE_AUTH", "sde", "mysdepwd", "SAVE_USERNAME", "pg1")

  2. ListUsers 関数を実行し、pg1 ジオデータベースへの現在のすべての接続をリストとして取得します。

    前の手順で作成した接続ファイルを指定します。

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

    ユーザー接続のリストが返されます。

    [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'sde')]

  3. 各ユーザーに連絡して、セッションを閉じるように要求します。 ユーザーと連絡が取れず、それでもそのユーザーをジオデータベースから切断する必要がある場合は、次の手順に進みます。
  4. ListUsers 関数から取得した情報に基づいて、DisconnectUser 関数を使用して削除する接続を特定します。

    削除する接続の ID を指定します。 ここでは、ID 33 を持つ接続を削除します。

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

    セッションが、即座にジオデータベースから削除されます。