我正在本地开发一项使用 SQL Server Express 作为数据库的服务。我看到奇怪的行为,存储过程连续执行多次(使用不同的参数),并且在几次成功调用(每次调用大约 1 秒)之后,它开始超时。
rpc_completed 事件显示以下信息:
CPU时间 | 逻辑读取数 | 期间 | 结果 |
---|---|---|---|
984000 | 15244 | 1048445 | 好的 |
63000 | 8543 | 75841 | 好的 |
531000 | 1782 | 30036796 | 中止 |
0 | 2 | 30003296 | 中止 |
15000 | 820 | 29995839 | 中止 |
0 | 2 | 30010495 | 中止 |
四个中止的事件是完全相同的命令+参数的重试。
这里发生了一些奇怪的事情:
cpu_time
始终低于 1 秒,即使duration
跳至 30 秒cpu_time
并且仅显示 2 logical reads
(应该是数千)这只是一个在开发机器上运行的简单 SQL Express 实例,没有进行任何其他操作。整个数据库只有几 MB,因此很难想象这些命令的成本会稍微昂贵。所以我不确定为什么服务器突然开始在这些命令上超时(虽然显然几乎没有做任何工作)。
知道这是怎么回事吗?
更新1:
该命令如下所示:
declare @p1 KeyType
insert into @p1 values (1234,2345) …
Run Code Online (Sandbox Code Playgroud)