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