我在SQL Server 2008 R2中工作,并且有一个生产表,我需要在另一个位置准确复制才能使用。我将首先运行一个工作来移动所有东西(一旦关闭),然后运行每日工作以每天更新更新/插入。
每日作业将查看生产表并查找需要插入的任何新值(基于创建日期),还可以查找需要更新的任何现有值(基于修改日期)。任何新值都是插入,任何修改的值都是更新。
作业从生产表中提取这些行,并将它们应用于位于其他位置的副本表。我遇到了时间戳列的问题。生产表有一个时间戳列,我不知道在更新复制表(也创建为时间戳列)时应该如何处理。
如果我设置了production.timestamp_col = copytable.timestamp_col(无法更新时间戳列),则会出错。
我应该将其遗漏(在这种情况下,我没有表格的精确副本),转换副本表格中的列和&从生产表中选择的值到其他东西(不确定是什么),把我自己的值放入(再次,没有表的精确副本)或者每次都删除/截断并重新创建(由于数据而导致效率低下)体积)?
在这样的情况下,最好的方法是什么?
由于
答案 0 :(得分:2)
在SQL中,时间戳列是系统生成的,您无法更新它或在插入时设置它。 SQL为您完成所有这些。
https://technet.microsoft.com/en-us/library/ms182776(v=sql.110).aspx
您可以通过复制/镜像来获取100%精确的副本,但根据您的需要,它可能不值得。
答案 1 :(得分:1)
您可以将目标时间戳列转换为varbinary(8)
,然后插入值。这将帮助您创建精确的副本,但它会破坏时间戳功能。如果您只需要一份副本,请执行此操作。 timestamp列的实际用途是通过版本控制跟踪对行的更改。