Sql server 无法识别ssis sp中的表变量

Sql server 无法识别ssis sp中的表变量,sql-server,ssis,ssis-2012,execute-sql-task,Sql Server,Ssis,Ssis 2012,Execute Sql Task,我在ssis中创建了一个名为Vpop\u summary\u table的变量 我在sql语句中使用了这个变量 我的变量 Vpop_汇总表 预计会产生价值 [dbo].[2019-02-02_pop_表] 在ssis中它是好的 DECLARE @Vpop_summary_table VARCHAR(100) SET @Vpop_summary_table= ? SELECT ,[Age Range] ,[Gender]

我在ssis中创建了一个名为
Vpop\u summary\u table
的变量

我在sql语句中使用了这个变量

我的变量

Vpop_汇总表

预计会产生价值

[dbo].[2019-02-02_pop_表]

在ssis中它是好的

DECLARE @Vpop_summary_table VARCHAR(100)


    SET  @Vpop_summary_table= ?
    SELECT 
          ,[Age Range]
          ,[Gender]
         ,[2023 Population]
     INTO [@Vpop_summary_table]
      FROM [dbo].[2018_Population_Table_CLARITAS]

我的表格创建为
[@Vpop\u summary\u table]
而不是
[dbo].[2019-02-02\u pop\u table]
表格名称和列名需要是静态的


如果要执行此操作,请创建完整的SQL,然后使用sp_executesql来执行它,尽管就良好实践而言,在变量中使用表看起来并不太好…

您不能将表名作为参数传递,您必须使用表达式来实现这一点:

打开“执行SQL任务编辑器”,转到“表达式”选项卡,为
SQLStatementSource
属性添加表达式,如下所示:

"SELECT 
       [Age Range]
      ,[Gender]
      ,[2023 Population]
 INTO " + @[User::Vpop_summary_table] + "
 FROM [dbo].[2018_Population_Table_CLARITAS]"
更多信息,请访问:

  • (请检查“使用SSIS表达式”部分)
无法从变量引用对象名称(表、列、数据库、函数等)。为此,您必须使用动态SQL。