如何按日期逐步选择*进入SQL表?

时间:2014-12-07 00:13:17

标签: sql-server backup increment sql-job

我有一个名为“tblProducts”的SQL Server表。

有时候我会通过这个简单的查询复制它来备份这个表:

SELECT *
INTO [test01].[dbo].[tblProducts_20141206]
FROM [test01].[dbo].[tblProducts]

每次进行备份时,日期都包含在表名中。

我想创建一个每周运行一次这种查询的SQL作业。

是否有可能在存储过程中或声明变量来实现这一点,以允许将备份的表名称命名为[tblProducts_todaysDate]?

感谢。

2 个答案:

答案 0 :(得分:0)

如果您使用SP,则可以执行以下操作:

 CREATE PROC sp_createATable
 @name        VARCHAR(20) AS
 CREATE TABLE @name
 ...
 do your insert

或者,如果你愿意,没有SP:

 DECLARE @name varchar(20)
 SET @name = 'tblName' + SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD]
 CREATE TABLE @name
 ...
 do your insert

答案 1 :(得分:0)

您需要Dynamic SQL来创建附加日期的表名。

CREATE PROC usp_createtable( @tablename VARCHAR(20), 
                 @Dbname    VARCHAR(20), 
                 @SchemaName VARCHAR(20)) 
AS 
  BEGIN 
    DECLARE @sql NVARCHAR(max) 
    SET @sql =' SELECT * INTO '+@Dbname+'.'+@SchemaName+'.'+@tablename+'CONVERT(VARCHAR(8), GETDATE(), 112) FROM '+@Dbname+'.'+@SchemaName+'.'+@tablename'' 
    EXEC sp_executesql 
      @sql 
  END