我有一些左右的永久桌子需要每晚重建。
为了使这些表尽可能长时间地“活动”,并且也提供仅备份前一天数据的可能性,另一位开发人员含糊地建议
当夜间构建发生时,采取与此类似的路线:
创建永久表(构建版本;例如 tbl_build_Client)
重命名活动表(tbl_Client 重命名为 tbl_Client_old)
将构建版本重命名为实时版本(tbl_build_Client 重命名为 tbl_Client)
要重命名表,将使用 sp_rename。
http://msdn.microsoft.com/en-us/library/ms188351.aspx
你有没有看到更有效的方法来解决这个问题,
或者该方法有什么严重的陷阱吗?提前致谢。
Update
试图清除 gbn 的答案和使用同义词的建议,
这是一种理性的方法,还是我在某些方面犯了严重错误?
“Client”的三个真实表:
1. dbo.build_Client
2. dbo.hold_Client
3. dbo.prev_Client
因为“Client”是其他进程引用“Client”数据的方式,所以默认同义词是
CREATE SYNONYM Client
FOR dbo.hold_Client
然后采取这些步骤刷新数据,同时保持不间断的访问。
(1.a.) TRUNCATE dbo.prev_Client
(有昨天的数据)
(1.b.) INSERT INTO dbo.prev_Client
来自 dbo.build_Client 的记录,因为 dbo.build_Client 仍然有昨天的数据
(2.a.) TRUNCATE dbo.build_Client
(2.b.)INSERT INTO dbo.build_Client
新数据构建过程中的新数据构建
(2.c.) 改变同义词
DROP SYNONYM Client
CREATE SYNONYM Client
FOR dbo.build_Client
(3.a.) TRUNCATE dbo.hold_Client
(3.b.)INSERT INTO dbo.hold_Client
来自 dbo.build_Client 的记录
(3.c.) 更改同义词
DROP SYNONYM Client
CREATE SYNONYM Client
FOR dbo.hold_Client