SQL Server のエンタープライズ ジオデータベースへの接続の管理

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

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

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

Microsoft SQL Server のエンタープライズ ジオデータベースからユーザーの接続を削除するには、ジオデータベース管理者に追加の権限が必要な場合があります。

  • sde スキーマ ジオデータベース (sde) のジオデータベース管理者は、接続されているユーザーのリストを表示する場合、データベースに対して VIEW DEFINITION 権限を持つ必要があり、ユーザーの接続を切断する場合、processadmin 固定サーバー ロールのメンバーである必要があります。
  • dbo スキーマ ジオデータベースのジオデータベース管理者がデータベースの所有者である場合、ユーザーの接続を切断するには、ジオデータベース管理者を processadmin 固定サーバー ロールに追加する必要があります。
dbo スキーマ ジオデータベースのジオデータベース管理者の場合、そのジオデータベース管理者が sysadmin 固定サーバー ロールのメンバーであれば、権限の追加は不要です。

注意:

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

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

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

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

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

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

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

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

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

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

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

  1. Python ウィンドウで CreateDatabaseConnection_management 関数を実行して、データベース接続ファイルを作成します。

    この例では、接続ファイル (ssgdb.sde) を temp フォルダーに作成します。 sa としてログインし、SQL Server インスタンス sdept4 上のデータベース gisprod に接続します。

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

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

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

    ##No need to import arcpy if you are running functions in the same Python window.
    import arcpy
    
    arcpy.ListUsers("c:\\temp\ssgdb.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'DBO')]

  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\ssgdb.sde",33)

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