Sql 自动将视图另存为带有额外列的表

Sql 自动将视图另存为带有额外列的表,sql,view,automation,Sql,View,Automation,在我的SQL数据库中,我有一个视图,其中包含用于报告内容的特定数据。出于存档目的,我希望自动将该视图保存为表。我已经用一个 SELECT * INTO t_ReportArchive FROM v_View (Table = t_ReportArchive; View = v_View) 所以这张桌子很好。视图和表的列在任何时候都不会更改,只会更新数据。我对SQL真的很陌生,我的问题是:是否可以运行脚本或其他东西来使用该视图中的新数据自动更新表?类似于“从v_视图更新t_ReportArchi

在我的SQL数据库中,我有一个视图,其中包含用于报告内容的特定数据。出于存档目的,我希望自动将该视图保存为表。我已经用一个

SELECT * INTO t_ReportArchive FROM v_View
(Table = t_ReportArchive; View = v_View)

所以这张桌子很好。视图和表的列在任何时候都不会更改,只会更新数据。我对SQL真的很陌生,我的问题是:是否可以运行脚本或其他东西来使用该视图中的新数据自动更新表?类似于“从v_视图更新t_ReportArchive”(从v_视图更新t_ReportArchive)之类的内容?

您可以在作业中安排此查询,并且可以按您希望的频率每小时、每日、每周、每月执行

请参考下面的链接

问候


Ashutosh Arya

您正在使用的查询将创建表并插入表中,因此只能使用一次。您可以在第一次手动运行以创建表bun,然后可以使用简单的插入,如:

insert into t_ReportArchive select * FROM v_View
或者,您可以为备份运行的每一天创建一个新表,并在该表中附加一个日期,如下所示:

declare @backupquery varchar(100) = 'select * into t_ReportArchive'+ REPLACE(CAST(CAST(CURRENT_TIMESTAMP AS DATE) AS VARCHAR(10)),'-','_')+ ' from v_View' 
exec (@backupquery)

当您从表中插入/更新/删除并从表中运行SQL时,可以使用触发器来运行

就我个人而言,我不喜欢触发器,因为很难一直跟踪正在发生的事情。对于计划作业也是如此


每当发生更改时,我宁愿从我的代码调用更新。

当您说“自动”时,是否希望将其设置在计时器上,以每天、每小时等进行更新。?在这种情况下,您应该考虑创建存储过程和作业。创建存储过程并将其设置为服务器作业