【发布时间】:2015-03-20 16:40:49
【问题描述】:
现在我遇到了一个存储过程在运行时被锁定的问题。
这是从 Sybase 转换而来的。
原来的存储过程会这样做
TRUNCATE TABLE appInfo
然后在同一个存储过程中重新填充数据,但在 SQL Server 中,这似乎会导致用户锁定。
它不是一个高流量的数据库。
我尝试的改变是要做的
BEGIN TRAN
DELETE TABLE appInfo
COMMIT TRAN
然后重新填充数据,但用户在这一项上收到 NO_DATA_FOUND 错误。
所以如果我TRUNCATE 他们获取数据,但它会导致锁定
如果我进行删除,则找不到数据。
有人对这种情况有任何见解和解决方案吗?我正在考虑将截断提取到一个单独的存储过程中并从父过程中调用,但这可能只是将问题推到后面,并没有真正解决它。
提前致谢
【问题讨论】:
-
您是否因为要重置身份而使用 Truncate? “DELETE [TABLE]”也是“DELETE * FROM [TABLE]”吗?
标签: sql-server stored-procedures truncate