Standard または Advancedのライセンスで利用可能。
ジオデータベース管理者は、時々、ジオデータベースに接続しているユーザーや、リソースをロックしている接続を確認する必要があります。特定の接続を削除することが必要な場合もあります。たとえば、ある編集者が編集セッションを開いたままにしたため、編集セッション中のデータがロックされ、他の編集者がそのデータにアクセスできなくなる場合があります。ジオデータベースに対して作成できる接続の数に制限がある場合、ログアウトしていないユーザーの接続を切断して接続を解除する必要があります。または、データベースにパッチを適用したり、データベースを復元したり、ジオデータベースを圧縮したりするために、すべてのユーザーをログアウトすることが必要な場合もあります。
ログアウトする必要のあるユーザーが不在の場合、ArcGIS for Desktop または ArcPy 関数から sde ユーザーでジオデータベース接続して、そのユーザーの接続を削除できます。ジオデータベースから他のユーザーの接続を削除するには、sde ユーザーがスーパーユーザー アクセス権限を持っている必要があります。
まず、ジオデータベースに接続しているユーザーを確認し、必要に応じて接続を削除します。ArcGIS for Desktop で DisconnectUser ArcPy 関数を使用してジオデータベースに接続できます。
ArcGIS for Desktop からの接続の確認と削除
ArcGIS for Desktop で 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(2014, 2, 18, 8, 30, 19), ID=18, IsDirecConnection=True, Name=u'publisher1')] [user(ClientName=u'PC25', ConnectionTime=datetime.datetime(2014, 2, 21, 14, 10, 43), ID=33, IsDirecConnection=True, Name=u'editor2')] [user(ClientName=u'PC11', ConnectionTime=datetime.datetime(2014, 2, 22, 9, 18, 26), ID=39, IsDirecConnection=True, Name=u'reader5')] [user(ClientName=u'PCA2', ConnectionTime=datetime.datetime(2014, 2, 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)
ユーザー セッションが、即座にジオデータベースから削除されます。