我们如何管理归档过程中没有在SQL Server 2000中编写单独的存储过程 ?一个普通的SQL查询归档超过一张桌子
例如,
- 有当前DB-学生和员工两个表。
目的是为了对数据进行存档,而此等表
student
表 - 数据超过1年employee
表 - 数据超过2年
日期字段年长在学生表中比较的字段为CreatedDate
,员工 的字段为DOJ
另外,我还保留了一个配置表,其中列ConfigtableName, ConfigColumnName , ConfigCutoffdate
。
a)我该如何编写一个通用查询,以便动态地从配置表中获取名称以及列名称 名称并将数据插入到归档dbs的表中?
事情是这样的....
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>
二)如何管理标识字段设置选项?
三)是否有可能,如果发生在第n次迭代的错误,也可能错误详细保存到一个日志?
通常情况下,我说你正在寻找一个动态的SQL语句,并可能是一个游标,通过配置表进行迭代,并且使用了加内置元表(INFORMATION_SCHEMA.COLUMNS)之一来构建您的插入声明并执行它们。泡泡,冲洗,对Config中的所有表格重复(光标)。但是,只有2桌这是矫枉过正。我只是写入插入语句和硬编码查找该表的截止日期 – billinkc
SQL不是关于神奇的动态语句或减少代码,而是关于基于刚性表定义的类似代码的重复和冗余块。你离开这个越远越复杂,越慢你的代码变得越远。 –