Standard または Advancedのライセンスで利用可能。
ジオデータベース管理者は、時々、ジオデータベースに接続しているユーザーや、リソースをロックしている接続を確認する必要があります。ログアウトする必要のあるユーザーが不在の場合、特定の接続を削除することが必要な場合もあります たとえば、ある編集者が編集セッションを開いたままにしたため、編集セッション中のデータがロックされ、他の編集者がそのデータにアクセスできなくなる場合があります。ジオデータベースに対して作成できる接続の数に制限がある場合、ログアウトしていないユーザーの接続を切断して接続を解除する必要があります。または、データベースにパッチを適用したり、データベースを復元したり、ジオデータベースを圧縮したりするために、すべてのユーザーをログアウトすることが必要な場合もあります。
ArcGIS Desktop から sde ユーザーとしてジオデータベースに接続して、接続を表示したり、必要に応じて接続を削除することができます。または、ArcPy 関数を使用して同じワークフローを実行することもできます。
まず、ジオデータベースに接続しているユーザーを確認します。必要に応じてそれらの接続を削除できます。
ArcMap からの接続の確認と削除
ArcMap で sde としてジオデータベースに接続し、[ジオデータベース管理] ダイアログ ボックス内に接続を表示できます。
- ArcMap または ArcCatalog を起動します。
- sde ユーザーとしてジオデータベースに接続します。
- カタログ ツリーでデータベース接続を右クリックし、[管理] をポイントして [ジオデータベースの管理] をクリックします。
- [接続] タブをクリックします。
現在ジオデータベースに接続しているすべてのセッションを示すリストが表示されます。自分のセッションは、斜体のテキストで表示されます。
- 各ユーザーに連絡して、セッションを閉じるように要求します。ユーザーと連絡が取れず、それでもそのユーザーをジオデータベースから切断する必要がある場合は、次の手順に進みます。
- ジオデータベースから削除する特定のユーザー セッションを右クリックし、[切断] をクリックします。
セッションが、即座にジオデータベースから削除されます。
ArcPy を使用した接続の確認と削除
Python 関数を実行して、ジオデータベース管理者用のジオデータベース接続ファイルを作成し、その接続ファイルを使用してジオデータベースに接続し、現在のすべてのジオデータベース接続を取得し、必要に応じてジオデータベースから接続を削除できます。
- 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")
- 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')]
- 各ユーザーに連絡して、セッションを閉じるように要求します。ユーザーと連絡が取れず、それでもそのユーザーをジオデータベースから切断する必要がある場合は、次の手順に進みます。
- 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)
セッションが、即座にジオデータベースから削除されます。