-1

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

有时我通过使用这个简单的查询复制该表来备份该表:

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

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

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

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

谢谢。

4

2 回答 2

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
于 2014-12-07T01:51:50.343 回答
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
于 2014-12-07T00:28:25.067 回答