Yerel hareketleri destekleme
oturum için işlem kapsam sınırlandırır bir SQL Server Sağlayıcı yerel istemci ole db ve yerel hareket.Ne zaman, bir tüketici yönünü en SQL Server yerel istemci ole db sağlayıcı bağlantılı örnek için bir istek gönderdiğinde SQL Server, istek için iş birimi oluşturan SQL Server yerel istemci ole db sağlayıcı.Yerel işlemler her zaman bir veya daha fazla iş birimlerinin tek bir sarma SQL Server yerel istemci ole db sağlayıcı oturum.
Varsayılan kullanarak SQL Server yerel istemci ole db sağlayıcı otomatik yürütme modu çalışmanın tek bir birim kapsam, olarak işlem görüryerel bir hareketin. Yalnızca tek bir birimin yerel harekete katılan.Bir oturum oluşturulduğunda, SQL Server yerel istemci ole db sağlayıcı başlar bir hareket için oturum.Başarıyla tamamlanmasından bir iş birimi, çalışmayı amaç edinmiştir.Başarısızlık, işlerinizi çalışmaya geri alınır ve tüketiciye bir hata bildirdi.Ya da, durum, SQL Server yerel istemci ole db sağlayıcı başlayıp oturum için yeni bir yerel işlem için tüm iş düzenlenen içinde hareket.
The SQL Server Native Client OLE DB provider consumer can direct more precise control over local transaction scope by using the ITransactionLocal interface.Tüketici oturumu bir işlem başlattığında, tüm oturum iş birimleri arasında hareket noktası kesin başlangıç ve Commit veya İptal yöntem çağrıları atomik bir birim olarak kabul edilir.The SQL Server Native Client OLE DB provider implicitly begins a transaction when directed to do so by the consumer.Tüketici koruma isteği, ana işlem düzey davranışı, en sık otomatik yürütme modu oturum döner.
The SQL Server Native Client OLE DB provider supports ITransactionLocal::StartTransaction parameters as follows.
Parameter |
Açıklama |
---|---|
isoLevel[de] |
Bu hareket ile kullanılacak yalıtım düzey.Yerel hareketleri, SQL Server yerel istemci ole db sağlayıcı aşağıdaki destekler:
Not
İle başlayan SQL Server 2005, ISOLATIONLEVEL_SNAPSHOT için geçerli isoLevel olmasa da sürüm oluşturma etkinleştirildiğinde veritabanı bağımsız değişkeni.Ancak, kullanıcı yürütmeye çalışırsa bir hata oluşacaktır bir deyim ve/sürüm oluşturma etkin değil veya veritabanı salt okunur değil.Buna ek olarak, hata XACT_E_ISOLATIONLEVEL ISOLATIONLEVEL_SNAPSHOT olarak belirtilmiş olması durumunda ortaya çıkar isoLevel bağlandığında bir sürüm , 'denSQL Server önceki SQL Server 2005.
|
isoİşaretleri[de] |
The SQL Server Native Client OLE DB provider returns an error for any value other than zero. |
pOtherOptions[de] |
Not null, SQL Server yerel istemci ole db sağlayıcı ister seçenekleri nesneden arabirim.The SQL Server Native Client OLE DB provider returns XACT_E_NOTIMEOUT if the options object's ulTimeout member is not zero.The SQL Server Native Client OLE DB provider ignores the value of the szDescription member. |
pulTransactionLevel[Çıkış] |
Not null, SQL Server yerel istemci ole db sağlayıcı döndürür iç içe düzey işlem. |
Yerel işlemler için SQL Server yerel istemci ole db sağlayıcı uygular Iİşlem::Durdur parametreleri aşağıdaki gibi.
Parameter |
Açıklama |
---|---|
pboidReason[de] |
Yoksayılan if küme.Güvenle null olabilir. |
fRetaining[de] |
DOĞRU olduğunda, yeni bir hareket örtülü olarak oturum için çalışmaya.Bir hareket tamamlandıktan veya tüketici tarafından sonlandırılmış olmalıdır.false olduğunda, SQL Server yerel istemci ole db sağlayıcı döner otomatik yürütme modu oturum. |
fAsync[de] |
Zaman uyumsuz iptal tarafından desteklenen değil SQL Server yerel istemci ole db sağlayıcı.The SQL Server Native Client OLE DB provider returns XACT_E_NOTSUPPORTED if the value is not FALSE. |
Yerel işlemler için SQL Server yerel istemci ole db sağlayıcı uygular ITransaction::Commit parametreleri aşağıdaki gibi.
Parameter |
Açıklama |
---|---|
fRetaining[de] |
DOĞRU olduğunda, yeni bir hareket örtülü olarak oturum için çalışmaya.Bir hareket tamamlandıktan veya tüketici tarafından sonlandırılmış olmalıdır.false olduğunda, SQL Server yerel istemci ole db sağlayıcı döner otomatik yürütme modu oturum. |
grfTC[de] |
Zaman uyumsuz ve döndürür aşaması tarafından desteklenmeyen SQL Server yerel istemci ole db sağlayıcı.The SQL Server Native Client OLE DB provider returns XACT_E_NOTSUPPORTED for any value other than XACTTC_SYNC. |
grfRM[de] |
0 Olmalıdır. |
The SQL Server Native Client OLE DB provider rowsets on the session are preserved on a local commit or abort operation based on the values of the rowset properties DBPROP_ABORTPRESERVE and DBPROP_COMMITPRESERVE.Varsayılan olarak, hem VARIANT_FALSE hem de tüm bu özellikleri olan SQL Server yerel istemci ole db sağlayıcı satır kümeleri üzerinde oturum izleyen bir durdurma veya yürütme işlemi. kaybolur
The SQL Server Native Client OLE DB provider does not implement the ITransactionObject interface.Arabirim üzerinde bir başvuru almak için tüketici girişimi 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.