用于存档多个表的通用SQL查询

时间:2011-09-02 11:55:34

标签: sql-server archive

我们如何在不编写单独的存储过程的情况下管理存档过程 在SQL Server 2000中?

例如,

  • 当前的db-student和employee中有两个表。
  • 目标是将数据存档在这些表格中 -

  • student表 - 超过1年的数据

  • employee表 - 超过2年的数据

学生表中要比较的日期字段是字段CreatedDate和员工的字段DOJConfigtableName, ConfigColumnName , ConfigCutoffdate

此外,我保留了一个包含INSERT INTO <ArchiveDb>.Dbo.<Table name obtained from config table> SELECT * FROM <CurrentDb>.Dbo.<Table name obtained from config table> WHERE <ConfigColumnName obtained from config table> < <Cutoffdate obtained from config table> 列的配置表。

a)如何编写通用查询,以便动态获取表名和列 配置表中的名称,并将数据插入存档dbs'表?

像这样......

{{1}}

b)如何管理识别字段集选项?

c)如果在第n次迭代中发生错误,是否可以将错误详细信息保存到日志中?

1 个答案:

答案 0 :(得分:0)

在存储过程中构造此类动态查询的唯一方法是使用sp_executesql存储过程。阅读我链接的文档。很直接。

我不确定我是什么意思“身份字段设置选项”,但如果您担心应该具有唯一值(PK)的列中的重复值,我建议您禁用唯一索引存档表,因为它们用于存档。我不认为在id列中存在重复值的主要问题,但最重要的是,如果归档表是源表的相同副本,则不会出现这种情况。

如果要在第n次迭代中捕获错误,则必须将每个迭代包含在begin tran / commit tran块中并检查错误。如果有,您可以登录到您选择的任何其他表;如果没有,那么你提交交易。 Read this示例(向下滚动到“交易”部分)。