0
我想本地化我有
與2個數據庫及其事務行爲的問題。
SQL Server - 通過兩個數據庫的非分佈式事務
我在單個SQL Server 2008 R2實例上創建兩個DB。
TEST1
TEST2
TEST1具有一個表TABLE_1
TEST2具有一個表TABLE_2
兩個表都有一個ID(int)和的值(字符串)列。
兩者都只有一行ID = 1。
然後,
在一些窗口1我做
use test1
begin transaction
update test1.dbo.Table_1
set
value = 'TEST-100'
where
ID = 1
update test2.dbo.Table_2
set
value = 'TEST-200'
where
ID = 1
commit transaction --- but I don’t run the commit yet ---
,然後在另一個窗口2,我做
select * From test1.dbo.Table_1
with (nolock)
select * From test2.dbo.Table_2
with (nolock)
這樣我可以看到兩個未提交的價值。
但是,如果在窗口2,我做
select * From test1.dbo.Table_1
或
select * From test2.dbo.Table_2
這些SELECT staments掛起。
所以我的問題是:是從
窗口1交易,跨越兩個數據庫?似乎是因爲
select * From test2.dbo.Table_2
掛過,這意味着,我認爲test2.dbo.Table_2
被徵了,我在窗口1
開始
同一交易但爲什麼是這樣的交易中擔當像分佈式的?
這是正常的嗎?什麼是解釋? SQL Server中有一些
未分割的功能嗎?有沒有任何
參考可以解釋我看到的行爲?
感謝您的回覆。你能指點我一些參考嗎? –
使用此鏈接作爲入口點:http://technet.microsoft.com/en-us/library/ms191440(v=sql.105)。aspx –
它不處理MSDTC(我知道,因爲我的MSDTC被禁用,它的工作原理)。它在SQL Server內部處理。我也不認爲它具有DISTRIBUTED TRANSACTION的屬性。 – usr