我有一个名为“tblProducts”的SQL Server表。
有时候我会通过这个简单的查询复制它来备份这个表:
SELECT *
INTO [test01].[dbo].[tblProducts_20141206]
FROM [test01].[dbo].[tblProducts]
每次进行备份时,日期都包含在表名中。
我想创建一个每周运行一次这种查询的SQL作业。
是否有可能在存储过程中或声明变量来实现这一点,以允许将备份的表名称命名为[tblProducts_todaysDate]?
感谢。
答案 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