【发布时间】:2017-02-17 17:58:23
【问题描述】:
我们有一个 SQL Server 2008R2 表,它跟踪递增的唯一键值,如事务编号等。它就像一个坏版本的序列对象。表中有大约 300 个这样的唯一键。 我的问题是该表每天都会增长几十万行,因为它保留了以前使用的数字。 我的问题是我们必须每周清理一次桌子,否则性能会受到影响。我想使用截断然后启动 SP 为 300 个键中的每一个生成下一个递增值。这适用于大约 5 分钟的运行时间,但在此期间系统正在尝试使用该表并抛出错误,因为没有数据。 有什么方法可以锁定表,阻止用户访问,截断然后解除锁定?
【问题讨论】:
-
您是在问“我如何从数据库中踢出用户”?
-
您是否可以在不同的表中执行您的过程,然后,一旦完成,将旧表重命名为其他名称,将新表重命名为“活动”表?如果是这样,那是瞬间的(你会暂时阻塞,但远不及现在的 5 分钟)。
标签: sql-server sql-server-2008-r2 truncate