Ale*_*huk 5 sql-server locking linked-server
我使用的是不断写入/读取的 MS SQL 数据库,以及通过链接服务器连接链接到的数据库。SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED这就是我在运行的每个查询中使用的原因。我的问题是,此事务级别是否会用于链接服务器上运行的查询?假设我的服务器被调用General并且它链接到服务器Linked。如果我运行以下查询:
select *
from General.TableName
join Linked.[Database].dbo.AnotherTableName on 1 = 1
Run Code Online (Sandbox Code Playgroud)
会Linked.Database.dbo.AnotherTableName被(IS)锁定吗?
是的,它使用与“原始”服务器相同的隔离级别。例如,请参阅此查询来测试它:
-- Test various isolation levels and compare them
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT CASE ss.transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncommitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL
,CASE ss2.transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncommitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL_LINKED
, ss2.*
FROM sys.dm_exec_sessions ss
inner join Linked.master.sys.dm_exec_sessions ss2
ON ss2.session_id >= 50
and ss2.database_id = db_id('master')
-- and ss2.host_name = ss.host_name
where ss.session_id = @@SPID
Run Code Online (Sandbox Code Playgroud)
此查询尝试显示链接服务器中的会话 ID,并显示其他进程及其隔离级别。您会看到,当您更改原始服务器上的级别时,链接服务器上的“您的”隔离级别也会更改
| 归档时间: |
|
| 查看次数: |
633 次 |
| 最近记录: |