【问题标题】:Multiple stored procedures for a purge script?清除脚本的多个存储过程?
【发布时间】:2014-10-06 18:55:53
【问题描述】:

我正在 VBScript 中创建一个清除脚本,它会从表中删除超过一个月的记录。

每个表的条件不同,有父表和子表(即后者依赖于前者获取ID码和上传状态)。

我的问题:是否应该将每个表的每个 DELETE 块创建为一个单独的过程,包括子删除和父删除?如何最好、最有效地处理这种情况?

SQL 代码示例:

DELETE FROM TestStaging.dbo.SpinDataEntries
WHERE TestStaging.dbo.SpinDataEntries.SpinDataId IN
(select TestStaging.dbo.SpinData.SpinDataId from TestStaging.dbo.SpinData
WHERE TestStaging.dbo.SpinData.UploadStatus in ('F', 'C')
AND LastUploaded < DATEADD (m,- 1,SYSDATETIME()));

DELETE FROM TestStaging.dbo.SpinData
WHERE TestStaging.dbo.SpinData.UploadStatus in ('F', 'C')
AND LastUploaded < DATEADD (m,- 1,SYSDATETIME());

是否应该将这两个块中的每一个以及其余代码记录为单独的存储过程,然后从单独的主 VBScript 中调用?

【问题讨论】:

  • 我想“孤儿”实际上是指“孩子”。
  • 是的,不知道“孤儿”从何而来……

标签: sql vbscript purge


【解决方案1】:

除非您需要能够单独运行每个语句,否则将它们包装在单个存储过程中会更有效。

【讨论】:

  • 谢谢,所以各个 SQL 块应该有自己的 BEGIN TRANEND TRAN 标签,对吧?
  • @vordhosbn 通常,您希望所有语句都完成,或者不完成(这是事务确保的)。如果您希望单个语句在另一个语句失败的情况下完成,您可以启用自动提交 (SET IMPLICIT_TRANSACTIONS OFF) 而不是将每个语句包装在单独的事务中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多