SQL Server 内のエンタープライズ ジオデータベースへの接続の管理
Standard または Advanced ライセンスで利用可能。
ジオデータベース管理者は、時々、ジオデータベースに接続しているユーザーや、リソースをロックしている接続を確認する必要があります。 接続解除する必要のあるユーザーが不在の場合、特定の接続を削除することが必要な場合もあります。 たとえば、ある編集者が編集中に ArcGIS Pro を開いたままにしたため、編集セッション中のデータがロックされ、他の編集者がそのデータにアクセスできなくなり、データ所有者がテーブルのスキーマを変更できなくなる場合があります。 または、データベースにパッチを適用したり、データベースを復元したり、ジオデータベースを圧縮したりするために、すべてのユーザーの接続を解除することが必要な場合もあります。
ArcGIS Pro からジオデータベース管理者としてジオデータベースに接続して、接続を表示したり、必要に応じて接続を削除することができます。 または、ArcPy 関数を使用して同じワークフローを実行することもできます。
Microsoft SQL Server のエンタープライズ ジオデータベースからユーザーの接続を削除するには、ジオデータベース管理者に追加の権限が必要な場合があります。
sde スキーマ ジオデータベース (sde) のジオデータベース管理者は、接続されているユーザーのリストを表示する場合、データベースに対して
VIEW DEFINITION権限を持つ必要があり、ユーザーの接続を切断する場合、processadmin 固定サーバー ロールのメンバーである必要があります。dbo スキーマ ジオデータベースのジオデータベース管理者がデータベースの所有者である場合、ユーザーの接続を切断するには、ジオデータベース管理者を processadmin 固定サーバー ロールに追加する必要があります。
dbo スキーマ ジオデータベースのジオデータベース管理者の場合、そのジオデータベース管理者が sysadmin 固定サーバー ロールのメンバーであれば、権限の追加は不要です。
注意:
ユーザーを切断する場合は注意が必要です。 特に接続ユーザーが編集中である場合は、アクティブなセッションを切断しないようにします。 開かれたままで使用されていないセッション (たとえば、誰かが週末にかけてセッションを開いたままにした場合)、オブジェクトをロックしている参照されなくなったセッション、またはデッドロック状況に関わっているセッションのみを切断してください。
まず、ジオデータベースに接続しているユーザーを確認します。 必要に応じてそれらの接続を削除できます。
ArcGIS Pro での接続の確認と削除
ArcGIS Pro でジオデータベース管理者としてジオデータベースに接続し、ジオデータベース管理 ダイアログ ボックスの接続を表示できます。
ArcGIS Pro を起動します。
ジオデータベース管理者としてジオデータベースに接続します。
データベース コネクションを右クリックし、管理 > 接続 をクリックします。
現在ジオデータベースに接続しているすべてのセッションを示すリストが表示されます。 自分のセッションは、斜体のテキストで表示されます。
各接続は、接続に使用されたログイン、内部 ID、接続のタイプ、接続元のコンピューター名、接続が行われた時間によって識別されます。
各ユーザーに連絡して、セッションを閉じるように要求します。 ユーザーと連絡が取れず、それでもそのユーザーをジオデータベースから切断する必要がある場合は、次の手順に進みます。
ジオデータベースから削除する特定のセッションを右クリックし、切断 をクリックします。
セッションが、即座にジオデータベースから削除されます。
ジオデータベース管理 ダイアログ ボックスを閉じます。
Python を使用した接続の確認と削除
ArcPy 関数を実行して、ジオデータベース管理者ユーザー用のジオデータベース コネクション ファイルを作成し、その接続ファイルを使用してジオデータベースに接続し、現在のすべてのジオデータベース コネクションを取得し、必要に応じてジオデータベースから接続を削除できます。
Python ウィンドウで
CreateDatabaseConnection_management関数を実行して、データベース コネクション ファイルを作成します。この例では、接続ファイル (
ssgdb.sde) を temp フォルダーに作成します。 sa としてログインし、SQL Server インスタンス sdept4 上のデータベース gisprod に接続します。import arcpy arcpy.management.CreateDatabaseConnection ("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)セッションが、即座にジオデータベースから削除されます。