次の方法で共有


ISSAbort::Abort (ネイティブ クライアント OLE DB プロバイダー)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC と略されることがよくあります) は、SQL Server 2022 (16.x) と SQL Server Management Studio 19 (SSMS) から削除されました。 SQL Server Native Client OLE DB プロバイダー (SQLNCLI または SQLNCLI11) とレガシ Microsoft OLE DB Provider for SQL Server (SQLOLEDB) はどちらも、新しい開発には推奨されません。 今後は、新しい Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server に切り替えてください。

現在の行セットと、現在のコマンドに関連付けられているバッチ コマンドを取り消します。

SQL Server Native Client OLE DB プロバイダーで公開されている ISSAbort インターフェイスには、現在の行セットを取り消すために使用される ISSAbort::Abort メソッドと、最初に行セットを生成したコマンドでバッチ処理されたコマンドと、まだ実行が完了していないコマンドが用意されています。

ISSAbort は、ICommand::Execute または IOpenRowset::OpenRowset によって返される IMultipleResults オブジェクトで、QueryInterface を使用して使用できる SQL Server Native Client プロバイダー固有のインターフェイスです。

構文

  
HRESULT Abort(void);  

解説

中止されるコマンドがストアド プロシージャ内にある場合、ストアド プロシージャ (およびそのプロシージャを呼び出したプロシージャ) の実行と、ストアド プロシージャ呼び出しを含むコマンド バッチが終了します。 サーバーがクライアントに結果セットを転送中の場合、この処理も停止します。 クライアントが結果セットを使用しない場合、行セットを解放する前に ISSAbort::Abort を呼び出すと、行セットの解放が高速になります。ただし、開いているトランザクションがあり、XACT_ABORT が ON の場合、ISSAbort::Abort が呼び出されたときに、トランザクションがロールバックされます。

ISSAbort::Abort が S_OK を返すと、関連する IMultipleResults インターフェイスは使用できない状態になり、このインターフェイスが解放されるまで、すべてのメソッド呼び出しに DB_E_CANCELED が返されます (ただし IUnknown インターフェイスで定義されたメソッドは除きます)。 Abort を呼び出す前に、IMultipleResults から IRowset を取得している場合、これも使用できない状態になり、ISSAbort::Abort の正常な呼び出し後にこのインターフェイスが解放されるまでは、すべてのメソッド呼び出しで DB_E_CANCELED が返されます (ただし、IUnknown インターフェイスと IRowset::ReleaseRows で定義されたメソッドは除きます)。

Note

SQL Server 2005 (9.x) 以降では、サーバーのXACT_ABORT状態が ON の場合、ISSAbort::Abort を実行すると、SQL Server に接続されたときに現在の暗黙的または明示的なトランザクションが終了し、ロールバックされます。 以前のバージョンの SQL Server では、現在のトランザクションは中止されません。

引数

[なし] :

リターン コードの値

S_OK
ISSAbort::Abort メソッドは、バッチが取り消された場合 S_OK を、それ以外の場合 DB_E_CANTCANCEL を返します。 バッチが既に取り消されている場合は、DB_E_CANCELED を返します。

DB_E_CANCELED
バッチは既に取り消されています。

DB_E_CANTCANCEL
バッチは取り消されませんでした。

E_FAIL
プロバイダー固有のエラーが発生しました。詳細を確認するには、ISQLServerErrorInfo インターフェイスを使用してください。

E_UNEXPECTED
メソッドの呼び出しが予期されませんでした。 たとえば、ISSAbort::Abort が既に呼び出されていたために、オブジェクトがゾンビ状態になっている場合などです。

E_OUTOFMEMORY
メモリ不足エラー。

参照

ISSAbort (OLE DB)