我正在尝试创建一个名为pipelinebackupWk##
的备份表,其中##
表示从财务日历表中查找的当前周。例如:本周备份表将被称为pipelinebackup10,下周它将被称为pipelinebackup12。我需要几个星期来自动更改,以便我的SSIS包运行,而不必每周手动更改它。
我目前正在使用这个:
select * into (
select 'Pipelinebackup'+'WK'+ RIGHT(CAST(WEEK_OF_QUARTER AS VARCHAR(2)),2)
From [dbo].[Fiscal_calendar]
Where ACTUAL_DATE = Convert(Datetime, Convert( nvarchar(20), getdate()-5,101))
)
from table12
答案 0 :(得分:0)
您可以使用存储过程创建表。在那里你动态编写create table字符串并执行它。如果你留在一个DB中,可能没有必要使用double exec(sp_execute)。这样的东西适合我,创建动态表:
create proc [make_new_tab]
as begin
declare @wk as NVARCHAR(2);
declare @SQL as NVARCHAR(MAX);
select @wk = CAST(WEEK_OF_QUARTER AS NVARCHAR(2)) from
[dbo].[Fiscal_calendar]
Where ACTUAL_DATE = (
select Convert( Datetime, Convert( nvarchar(20), getdate()-5,101)))
from table12)
set @SQL = N'exec YOUR_DB..sp_executesql N''CREATE TABLE PipelinebackupKW'+ @wk + ' (Col1 INT NOT NULL, Col2 INT NOT NUL) ON PRIMARY ''
EXEC(@SQL)
end
答案 1 :(得分:0)
如果您想在SSIS中创建表格,可以:
使用执行SQL任务在财务年度表查询中运行查找周数,将结果存储在变量中(称为 WeekNumber )。
使用表达式任务构建存储在另一个变量中的CREATE TABLE
语句。此表达式应引用您需要插入周数的@ [User :: WeekNumber]变量。例如:@[User::CreateTableQuery] = "CREATE TABLE pipelinebackupWk" + @[User::WeekNumber] + " (c1 int PRIMARY KEY, ....."
使用第二个执行SQL任务来运行 create table query 变量中定义的查询。