我们如何在不编写单独的存储过程的情况下管理存档过程 在SQL Server 2000中?
例如,
目标是将数据存档在这些表格中 -
student
表 - 超过1年的数据
employee
表 - 超过2年的数据学生表中要比较的日期字段是字段CreatedDate
和员工的字段DOJ
是ConfigtableName, 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次迭代中发生错误,是否可以将错误详细信息保存到日志中?
答案 0 :(得分:0)
在存储过程中构造此类动态查询的唯一方法是使用sp_executesql存储过程。阅读我链接的文档。很直接。
我不确定我是什么意思“身份字段设置选项”,但如果您担心应该具有唯一值(PK)的列中的重复值,我建议您禁用唯一索引存档表,因为它们用于存档。我不认为在id列中存在重复值的主要问题,但最重要的是,如果归档表是源表的相同副本,则不会出现这种情况。
如果要在第n次迭代中捕获错误,则必须将每个迭代包含在begin tran / commit tran块中并检查错误。如果有,您可以登录到您选择的任何其他表;如果没有,那么你提交交易。 Read this示例(向下滚动到“交易”部分)。