【问题标题】:execute sql task error执行sql任务错误
【发布时间】:2016-07-11 12:54:27
【问题描述】:

执行sql任务定义如下。参数映射为 系统:用户名输入 varchar 0 -1 System:packagename 输入 varchar 1 -1

DECLARE @DataLoaderUsername VARCHAR(100)
DECLARE @PackageName VARCHAR(100)
DECLARE @Code VARCHAR(5)
DECLARE @RunNumber INT

SET @DataLoaderUsername = ?
SET @PackageName = ?
SET @Code = 'bbb'


INSERT INTO tBL_Log
(LoadDateTime,DataLoaderUsername,PackageName,Code)
SELECT GetDate(),@DataLoaderUsername,@PackageName ,@Code

SELECT @RunNumber = Max(RunNumber) 
FROM tBL_Log

SELECT @RunNumber As LoadID

显示错误

Execute SQL Task] Error: Executing the query "DECLARE @DataLoaderUsername VARCHAR(100)

在 ssms 中执行相同的查询,它工作正常(使用硬编码的用户名)

【问题讨论】:

    标签: ssis ssis-2012 ssis-2008


    【解决方案1】:

    在每个 SQL 命令的末尾加上分号。当 SSIS 将命令发送到 SQL Server 时,它将作为单行发送,因此需要用分号来显示 SQL Server 每个新命令的开始位置。

    【讨论】:

    • 错误信息应该有更多内容。你能发布整个消息吗?
    【解决方案2】:

    您在执行 SQL 任务中的代码应该只包含以下内容。

    INSERT INTO tBL_Log
    (LoadDateTime,DataLoaderUsername,PackageName,Code)
    SELECT GetDate(),? ,?, 'bbb'
    
    SELECT LoadID = Max(RunNumber) 
    FROM tBL_Log
    

    在“常规”页面中,确保您已将 ResultSet 设置为单行,并且数据库连接也设置为有效的连接管理器。

    我认为您已经设置了 Parameters 页面,只需确保它们如下所示。请记住,参数的索引从 0 开始,并在 Parameter Name 框中指定(我知道,这不直观。一开始我学习 SSIS 时它把我绊倒了)。

    最后,为了获得您在最后一条语句中选择的LoadId 值,请在ResultSet 窗格中创建一个变量来保存该值。 ResultSet 应称为0。

    所以它看起来像这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      相关资源
      最近更新 更多