Aracılığıyla paylaş


Yerel hareketleri destekleme

Bir oturum için işlem kapsam sınırlandırır bir SQL Server Yerel istemci OLE DB sağlayıcı yerel işlem. Ne zaman, tüketici, yönünü adresindeki SQL Server Yerel istemci OLE DB sağlayıcısına bağlı örnek için bir istek gönderir. SQL Server, istek için iş birimi oluşturan SQL Server Yerel istemci OLE DB sağlayıcı. Yerel işlemler her zaman tek bir iş, bir veya daha fazla birim kaydır SQL Server Yerel istemci OLE DB sağlayıcı oturum.

Varsayılan olarak kullanma SQL Server Yerel istemci OLE DB sağlayıcı otomatik yürütme modu, tek bir iş biriminin yerel bir işlem kapsam nitelenir. Yalnızca bir birimi, yerel bir işlem içinde katıldığı.Bir oturum oluşturulduğunda, SQL Server Yerel istemci OLE DB sağlayıcı oturumu için bir hareket başlatır. Başarılı tamamlandığında bir iş birimi, iş amaç edinmiştir.Hatası, başlamış bir iş döndürülüyor ve hata tüketiciye bildirilir.Her iki durumda, SQL Server Böylece, tüm iş, bir işlem içinde yürütülür yerel istemci OLE DB sağlayıcı oturum için yeni yerel bir işlem başlar.

The SQL Server Native istemci OLE DB sağlayıcı consumer can direct more precise control over local transaction kapsam by using the ITransactionLocal arabirim.Tüketici oturum bir işlem başlattığında, tüm oturum birimleri arasındaki hareketin başlangıç noktasını ileride çalışma... yürütme or Iptal etme yöntem çağrıları atomik bir birim olarak kabul edilir.The SQL Server Native istemci OLE DB sağlayıcı implicitly begins a transaction when directed to do so by the consumer. Tüketici saklama isteği, oturum ana işlem düzeyinde davranış, genellikle otomatik yürütme modu döner.

The SQL Server Native istemci OLE DB sağlayıcı supports ITransactionLocal::StartTransaction parameters as follows.

Parameter

Açıklama

isoLevel[]

Bu işlemle ilgili olarak kullanılacak yalıtım düzey.Yerel işlemlerde SQL Server Yerel istemci OLE DB sağlayıcı aşağıdakileri destekler:

  • isolationlevel_unspecified

  • isolationlevel_chaos

  • isolationlevel_readuncommitted

  • isolationlevel_readcommitted

  • isolationlevel_repeatableread

  • isolationlevel_cursorstability

  • isolationlevel_repeatableread

  • isolationlevel_serializable

  • isolationlevel_isolated

  • isolationlevel_snapshot

NoteNote:
Ile başlayan SQL Server 2005ISOLATIONLEVEL_SNAPSHOT geçerli olduğu isoLevel bağımsız değişkeni için veritabanı sürüm oluşturma etkin olup olmadığı.Ancak, kullanıcı bir deyim yürütmek girişiminde ve/sürüm oluşturma etkin değil veya veritabanı salt okunur değil, bir hata oluşacaktır.Buna ek olarak, hata XACT_E_ISOLATIONLEVEL ISOLATIONLEVEL_SNAPSHOT olarak belirtilmiş olması durumunda ortaya çıkar isoLevel sürümüne bağlıykenSQL Server tarihi SQL Server 2005.

isoFlags[]

The SQL Server Native istemci OLE DB sağlayıcı returns an error for any value other than zero.

pOtherOptions[]

Değil null ise, SQL Server Yerel istemci OLE DB sağlayıcı seçenekleri nesne arabirimden ister. The SQL Server Native istemci OLE DB sağlayıcı returns XACT_E_NOTIMEOUT if the options object's ulTimeout üye is not zero.The SQL Server Native istemci OLE DB sağlayıcı ignores the value of the szDescription üye.

pulTransactionLevel[Çıkış]

Değil null ise, SQL Server Yerel istemci OLE DB sağlayıcı, iç içe geçmiş hareket düzeyini döndürür.

Yerel hareketlerinde SQL Server Yerel istemci OLE DB sağlayıcı uygular ITransaction::Abort parametreleri aşağıdaki gibi.

Parameter

Açıklama

pboidReason[]

Yoksayılan if ayarlayın.Güvenli bir şekilde null olabilir.

fRetaining[]

TRUE olduğunda, yeni bir hareket örtülü olarak oturum için başladı.Hareket tamamlanmış olmalı veya tüketici tarafından sona erdirildi.FALSE'olduğunda, SQL Server Yerel istemci OLE DB sağlayıcı, oturum için autocommit moduna döner.

fAsync[]

Zaman uyumsuz iptal tarafından desteklenen SQL Server Yerel istemci OLE DB sağlayıcı. The SQL Server Native istemci OLE DB sağlayıcı returns XACT_E_NOTSUPPORTED if the value is not FALSE.

Yerel hareketlerinde SQL Server Yerel istemci OLE DB sağlayıcı uygular ıişlem::Kaydet parametreleri aşağıdaki gibi.

Parameter

Açıklama

fRetaining[]

TRUE olduğunda, yeni bir hareket örtülü olarak oturum için başladı.Hareket tamamlanmış olmalı veya tüketici tarafından sona erdirildi.FALSE'olduğunda, SQL Server Yerel istemci OLE DB sağlayıcı, oturum için autocommit moduna döner.

grfTC[]

Zaman uyumsuz ve aşama bir sayı tarafından desteklenmeyen SQL Server Yerel istemci OLE DB sağlayıcı. The SQL Server Native istemci OLE DB sağlayıcı returns XACT_E_NOTSUPPORTED for any value other than XACTTC_SYNC.

grfRM[]

0 Olmalıdır.

The SQL Server Native istemci OLE DB sağlayıcı rowsets on the oturum are preserved on a local yürütme or abort operation based on the values of the satır kümesi properties DBPROP_ABORTPRESERVE and DBPROP_COMMITPRESERVE. Varsayılan olarak, bu özellikler hem VARIANT_FALSE ve tüm gelir SQL Server Oturum, yerel istemci OLE DB sağlayıcı Satır kümeleri, iptal'i veya yürütme işlemi aşağıdaki kaybolur.

The SQL Server Native istemci OLE DB sağlayıcı does not implement the ITransactionObject arabirim.Arabirim üzerinde bir başvuru almak için BIR tüketici girişimini E_NOINTERFACE döndürür.

Bu örnek kullanır. Itransactionlocal.

// Interfaces used in the example.
IDBCreateSession*   pIDBCreateSession   = NULL;
ITransaction*       pITransaction       = NULL;
IDBCreateCommand*   pIDBCreateCommand   = NULL;
IRowset*            pIRowset            = NULL;

HRESULT             hr;

// Get the command creation and local transaction interfaces for the
// session.
if (FAILED(hr = pIDBCreateSession->CreateSession(NULL,
     IID_IDBCreateCommand, (IUnknown**) &pIDBCreateCommand)))
    {
    // Process error from session creation. Release any references and
    // return.
    }

if (FAILED(hr = pIDBCreateCommand->QueryInterface(IID_ITransactionLocal,
    (void**) &pITransaction)))
    {
    // Process error. Release any references and return.
    }

// Start the local transaction.
if (FAILED(hr = ((ITransactionLocal*) pITransaction)->StartTransaction(
    ISOLATIONLEVEL_REPEATABLEREAD, 0, NULL, NULL)))
    {
    // Process error from StartTransaction. Release any references and
    // return.
    }

// Get data into a rowset, then update the data. Functions are not
// illustrated in this example.
if (FAILED(hr = ExecuteCommand(pIDBCreateCommand, &pIRowset)))
    {
    // Release any references and return.
    }

// If rowset data update fails, then terminate the transaction, else
// commit. The example doesn't retain the rowset.
if (FAILED(hr = UpdateDataInRowset(pIRowset, bDelayedUpdate)))
    {
    // Get error from update, then terminate.
    pITransaction->Abort(NULL, FALSE, FALSE);
    }
else
    {
    if (FAILED(hr = pITransaction->Commit(FALSE, XACTTC_SYNC, 0)))
        {
        // Get error from failed commit.
        }
    }

if (FAILED(hr))
    {
    // Update of data or commit failed. Release any references and
    // return.
    }

// Release any references and continue.