所以我两天来一直在努力解决这个问题,但我找不到解决方案。我正在运行一个脚本来暂存大量数据。这个脚本需要大约 3500 万个锁才能完成;这意味着需要 3.36GB 的内存可用于锁定。我在配置的值中将锁的数量设置为 3700 万,但是在重新启动后,运行值只允许 16,695,296 个锁。
这相当于大约 14% 的可用内存。由于 SQL Server 2012 可以将 40% 的可用内存用于锁定,我应该有足够的空间,但我没有。我的问题是:为什么 SQL Server 不能利用额外的 26% 的可用锁内存?我读过的一切都说它应该能够。
此外,我确实尝试在动态上运行锁,但由于相同的原因和相同的错误代码也失败了:错误 1204,实例无法获得锁资源。我知道这是服务器配置而不是脚本,因为我运行了完全相同的脚本,在旧服务器(SQL Server 2008)上使用完全相同的数据集没有问题。
向数据库管理员求助;帮助我哦伟大的人!
编辑:这是故障转移群集上的 VM,该 VM 分配了 16 GB 内存。我为 SQL Server 提供了 12GB 的空间,并为主机操作系统留下了 4GB 的空间。