Share via


データベースのロックおよびロック解除 (XMLA)

XML for Analysis (XMLA) の Lock および Unlock コマンドを使用すると、データベースをロック/ロック解除できます。通常、他の XMLA コマンドは、実行時にコマンドを完了させる必要に応じて、自動的にオブジェクトをロック/ロック解除します。Batch コマンドのように、単一のトランザクション内で複数のコマンドを実行する場合、他のアプリケーションが書き込みトランザクションをデータベースに対してコミットするのを防ぐために、明示的にデータベースをロック/ロック解除することができます。

データベースのロック

Lock コマンドは、現在アクティブなトランザクションのコンテキスト内で、共有オブジェクトまたは排他的に使用されるオブジェクトをロックします。オブジェクトをロックすると、そのロックが解除されるまでトランザクションはコミットできません。Microsoft SQL Server Analysis Services では、共有ロックと排他ロックの 2 種類がサポートされています。Analysis Services でサポートされるロックの種類の詳細については、「Mode 要素 (XMLA)」を参照してください。

Analysis Services では、データベースに対するロックだけが可能です。Object 要素には、Analysis Services データベースへのオブジェクト参照を含める必要があります。Object 要素が指定されていない場合、またはデータベース以外のオブジェクトを Object 要素が参照している場合には、エラーが発生します。

セキュリティに関する注意セキュリティに関する注意

Lock コマンドを明示的に発行できるのは、データベース管理者またはサーバー管理者だけです。

他のコマンドは、Analysis Services データベースに対する Lock コマンドを暗黙的に発行します。データベースからデータまたはメタデータを読み取るすべての操作 (たとえば Discover メソッドや、Statement コマンドを実行する Execute メソッド) は、データベースに対する共有ロックを暗黙的に発行します。Analysis Services データベース上のオブジェクトに対してデータまたはメタデータの変更内容をコミットするすべてのトランザクション (たとえば Alter コマンドを実行する Execute メソッド) は、データベースに対する排他ロックを暗黙的に発行します。

データベースのロック解除

Unlock コマンドは、現在アクティブなトランザクションのコンテキスト内で確立されたロックを解除します。

セキュリティに関する注意セキュリティに関する注意

Unlock コマンドを明示的に発行できるのは、データベース管理者またはサーバー管理者だけです。

すべてのロックは、現在のトランザクションのコンテキスト内で保持されます。現在のトランザクションがコミットまたはロールバックされると、そのトランザクション内で定義されたすべてのロックは自動的に解放されます。