次の方法で共有


ISSAsynchStatus::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 に切り替えてください。

非同期に実行されている操作を取り消します。

構文

  
HRESULT Abort(  
        HCHAPTER hChapter,  
        DBASYNCHOP eOperation);  

引数

hChapter[in]
操作を中止するチャプターのハンドル。 呼び出されるオブジェクトが行セット オブジェクトではない場合、または操作が章に適用されない場合、呼び出し元は hChapter を DB_NULL_HCHAPTER に設定する必要があります。

eOperation[in]
中止する操作。 この引数には、

DBASYNCHOP_OPEN。キャンセル要求が適用されるのは、行セットを非同期で開くか設定する場合、またはデータ ソース オブジェクトを非同期で初期化する場合です。

リターン コードの値

S_OK
非同期操作を取り消す要求が処理されました。 ただし、その操作自体が取り消されることが保証されるわけではありません。 実際に操作が取り消されたかどうかを判断するには、コンシューマーで ISSAsynchStatus::GetStatus を呼び出し、DB_E_CANCELED が返されるかどうかを調べる必要があります。ただし、要求直後に呼び出しても、この値が返されないことがあります。

DB_E_CANTCANCEL
非同期操作をキャンセルできません。

DB_E_CANCELED
非同期操作を中止する要求は、通知中に取り消されました。 操作は引き続き非同期に実行されます。

E_FAIL
プロバイダー固有のエラーが発生しました。

E_INVALIDARG
hChapter パラメーターがDB_NULL_HCHAPTERされていないか、eOperationがDBASYNCH_OPENされていません。

E_UNEXPECTED
ISSAsynchStatus::Abort は、 IDBInitialize::Initialize が呼び出されていないか、完了していないデータ ソース オブジェクトに対して呼び出されました。

ISSAsynchStatus::Abort は、 IDBInitialize::Initialize が呼び出されたが、初期化前に取り消されたデータ ソース オブジェクトで呼び出されたか、タイムアウトしました。データ ソース オブジェクトはまだ初期化されていません。

ISSAsynchStatus::Abort は、 ITransaction::Commit または ITransaction::Abort が以前に呼び出された行セットで呼び出され、行セットはコミットまたは中止に耐えず、ゾンビ状態になっています。

初期化フェーズで非同期に取り消された行セットに対して ISSAsynchStatus::Abort が呼び出された場合も、この値が返されます。 行セットはゾンビ状態になります。

解説

行セットまたはデータ ソース オブジェクトの初期化を中止すると、その行セットまたはデータ ソース オブジェクトはゾンビ状態になり、IUnknown メソッド以外のすべてのメソッドから E_UNEXPECTED が返されます。 この状態になると、コンシューマーはその行セットまたはデータ ソース オブジェクトの解放しか実行できません。

eOperation に DBASYNCHOP_OPEN 以外の値を渡して ISSAsynchStatus::Abort を呼び出すと、S_OK が返されます。 これは、操作が完了したか取り消されたことを示すわけではありません。

参照

非同期操作の実行