我有两个问题:
1. 为什么在这种情况下会出现更新冲突而不是阻塞:
-- prepare
drop database if exists [TestSI];
go
create database [TestSI];
go
alter database [TestSI] set READ_COMMITTED_SNAPSHOT ON;
alter database [TestSI] set ALLOW_SNAPSHOT_ISOLATION ON;
go
use [TestSI];
go
drop table if exists dbo.call_test;
create table dbo.call_test ( Id bigint CONSTRAINT [PK_Call] PRIMARY KEY CLUSTERED ( [Id] ASC ), additional int, incl int );
create index ix_Call on dbo.call_test ( additional ) include( incl );
insert into dbo.call_test select 1, 2, 3;
go
Run Code Online (Sandbox Code Playgroud)
第一节:
use [TestSI];
go
set …
Run Code Online (Sandbox Code Playgroud) sql-server database-internals locking snapshot-isolation sql-server-2016
情况:我使用Service Broker开发数据推送方式。
现在我考虑一个场景:
在Broker数据库中安装 Service Broker 的脚本:
-- installation
use master
go
if exists ( select * from sys.databases where name = 'Broker' )
begin
alter database [Broker] set restricted_user with rollback immediate;
drop database [Broker];
end
go
create database [Broker]
go
alter database [Broker] set enable_broker with rollback immediate;
alter database [Broker] set read_committed_snapshot on;
alter database …
Run Code Online (Sandbox Code Playgroud)