Ale*_*lex 11 sql-server ssms transaction
我的理解是,在 MS SQL Server Management Studio 窗口中,在执行“开始事务”然后进行一些更改(例如将数据添加到表)之后,您只能从同一窗口查询该表和这些更改,直到您执行“提交交易”。
在执行“提交事务”之前,有什么方法可以从其他来源进行查询?
具体到我当前的目标并添加一些上下文。我从 Excel Power Query 执行一些 SQL 查询。我真的很希望能够在“提交事务”之前执行这些查询,以便我可以进行一些分析并确定是否应该进行回滚而不是提交。
von*_*ryz 15
是的,如果您更改查询修改数据的会话(这就是您在 SSMS 中称为“窗口”)的事务隔离级别,则是可能的。通常这不是一个好主意,因为您可能会得到一些意想不到的结果。仔细考虑副作用。我不知道是否可以更改 Excel Power Query 中的事务隔离级别。
例如,即使没有提交/回滚,以下查询集也会插入一些数据并正确显示更新。
-- Session 1
begin tran tx_test;
-- Assume the Test table exists and insert is okay
insert dbo.Test(datadate, content) values (getdate(), 'transaction');
select * from Test; -- Shows the new data
-- After select, one would execute one of the following
-- commit;
-- rollback;
Run Code Online (Sandbox Code Playgroud)
同时,第二个会话执行一个似乎没有做任何事情的选择:
-- Session 2
-- This waits for uncommitted transaction
-- and returns results after 1st session commits/rollbacks
select * from Test;
Run Code Online (Sandbox Code Playgroud)
创建第三个会话并更改其隔离级别:
-- Session 3
set transaction isolation level read uncommitted;
-- This reads the inserted data from the 1st session, even before commit
select * from Test;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37635 次 |
最近记录: |