我们需要(每月一次)清除包含50,000条记录的表格内容,并使用存储过程重新填充。 SP具有“用户定义的表类型”参数,该参数包含要插入的所有新记录。
目前的想法如下
ALTER PROCEDURE [ProcName]
@TableParm UserTableType READONLY
AS
[Set lock on table?]
BEGIN TRAN
DELETE FROM [table]
INSERT INTO [table](column, column, column)
SELECT (a.column, a.column, a.column) FROM @TableParm a
COMMIT TRAN
[Remove lock from table?]
我已经阅读了一些建议设置READ COMMITED或READ UNCOMMITED的解决方案......但我认为我会转向专业人士,根据情况引导我朝着正确的方向前进。
谢谢!
答案 0 :(得分:1)
我使用可序列化的交易
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
READ...
类型级别都允许从表中读取某些表单的数据,这可能不是您想要的。
您也可以使用TRUNCATE TABLE
而不是DELETE
,具体取决于您的数据结构。
如果减少此表的不可用性是一个问题,您可以通过创建一个新表,填充它,然后重命名旧表和新表来减少它。