小编Pav*_* Zv的帖子

不清楚更新冲突

我有两个问题:

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

13
推荐指数
2
解决办法
934
查看次数

服务代理锁

情况:我使用Service Broker开发数据推送方式

现在我考虑一个场景:

  1. 使用具有服务、队列和存储过程的单独 DB(称为Broker)来发送数据。
  2. 在必要的数据库和表上使用触发器,将数据转换为 JSON 并从Broker数据库执行 SP以发送数据。我有 39 个数据库/264632 个表/I/U/D 的每个表中的单独触发器。793896 完全触发。是的,我知道它很大,但我们有这样的数据模型,我无法更改它。
  3. 现在我不使用激活存储过程,因为有些客户端会使用来自 SB 目标队列的数据。

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)

sql-server service-broker

3
推荐指数
1
解决办法
394
查看次数