使用 C# 从完整结果集变量获取数据到脚本任务

2024-02-25

我需要使用脚本任务将数据从 SQL 任务获取到 DataTable 对象以生成电子邮件。但是当我尝试使用 OLEDB 适配器填充任务填充数据时,它会生成错误:

OleDbDataAdapter 内部错误:行集访问器无效:Ordinal=1 Status=UNSUPPORTEDCONVERSION

截屏

如上,

public void Main()
{
    // TODO: Add your code here
    DataTable dt = new DataTable();
    String message = "";
    OleDbDataAdapter adapter = new OleDbDataAdapter();

    if (Dts.Variables.Contains("onErrorList") == true)
    {  
        try
        {
            try
            {
                adapter.Fill(dt, Dts.Variables["onErrorList"].Value);
            } catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

            foreach (DataRow row in dt.Rows)
            {
                message = message + "\n" + "Error Time : " + row["message_time"] + "\n" + "Execution Path : " + row["executionpath"] + "\n" + "Error : " + row["MESSAGE"];
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
    }

    message = Dts.Variables["executionMessage"].Value + "\n" + message;


    try {
        sendMail("[email protected] /cdn-cgi/l/email-protection", "Error in  ETL ", message);
        Dts.TaskResult = (int)ScriptResults.Success;
    }
    catch (Exception e)
    {

        MessageBox.Show(e.Message, "Mail Sending Failed");
        Dts.TaskResult = (int)ScriptResults.Failure;
    }


}

#region ScriptResults declaration
/// <summary>
/// This enum provides a convenient shorthand within the scope of this class for setting the
/// result of the script.
/// 
/// This code was generated automatically.
/// </summary>
enum ScriptResults
{
    Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
    Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion

这一行是产生错误的地方:

adapter.Fill(dt, Dts.Variables["onErrorList"].Value); 

和我用来获取值的 SQL 代码

    SELECT  message_time,CAST(execution_path AS NVARCHAR(100)) AS executionpath , MESSAGE
FROM   (
       SELECT  em.*
       FROM    SSISDB.catalog.event_messages AS em 
       WHERE   em.operation_id = (SELECT MAX(execution_id) FROM SSISDB.catalog.executions)
          -- AND event_name NOT LIKE '%Validate%'
       )q 
WHERE   event_name = 'OnError'
ORDER BY message_time DESC

Result set mapping to variable mapping to object variable

variable type Variable list in my package

请帮我解决这个问题。


我这样做是为了将结果集从 SSIS 变量导入到数据表中,以便稍后在我的代码中使用。我就是这样做的。

您的 SSIS 变量必须是对象数据类型。如果没有,您需要先使用它。

然后,您使用 c# 来获取数据并将其转换为适配器,如下所示(而不是像您尝试那样直接转换为适配器):

// import SSIS variable of object type
Object OBJDataTableValidFieldListFull = Dts.Variables["User::SSISVariableObject"].Value;

// create datatable variable and dataadpapter
DataTable dtValidFieldListFull = new DataTable();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter();

// fill datatable from variable passed from SSIS Object type
dataAdapter.Fill(dtValidFieldListFull, OBJDataTableValidFieldListFull);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 从完整结果集变量获取数据到脚本任务 的相关文章

随机推荐

  • 如何对具有两个 IP 地址的服务器使用 python 请求

    我有一个具有多个 IP 地址的 Ubuntu 服务器 举个例子 如何为像 python requests 这样的库中的出站请求设置正确的 IP 地址 None
  • 我可以在 angular2 中返回原始 json 响应吗

    angular2 是否可以返回原始 json 响应 前任 成分 getrawJson this someservice searchJson subscribe somelist gt this somelist somelist erro
  • 是否可以使用“yield”来生成“Iterator”而不是 Scala 中的列表?

    是否可以使用yield作为迭代器而不评估每个值 当很容易实现复杂的列表生成时 这是一个常见的任务 然后你需要将其转换为Iterator 因为你不需要一些结果 当然 实际上 非严格性有三种选择 我在下面列出 对于示例 假设 val list
  • Delphi XML 数据绑定错误:“未知数据类型”

    我正在尝试从导入的架构中导入包含一些复杂文件的 XSD 文件 XML 数据绑定向导给我一个 未知数据类型 错误 我在几个论坛中看到这个问题 但目前还没有解决方案 这是文件 http www sii cl factura electronic
  • Android 12 上的 apk 安装失败

    compileSdkVersion 31 defaultConfig minSdkVersion 20 targetSdkVersion 31 构建或组装调试效果良好 但是安装APK时出现 解析包错误时出现问题 当我查找时 我看到将 and
  • 如何在 Visual Studio Code 中为 C++ 启用漂亮打印?

    我正在尝试使用 MinGW GDB python 调试器在 Visual Studio Code 中启用 C 的漂亮打印 我按照描述的步骤操作here https stackoverflow com questions 4985414 ho
  • 检查显示器是否已连接

    我必须制作一个简单的程序 向服务器报告显示器的状态 是开 关还是只是未连接 到目前为止 我正在使用在另一个讨论中找到的这种方法 但它每次都会返回 true 即使我已经断开了显示器的连接 public static Boolean isMon
  • getJSON 同步

    目标 我所追求的是每次在数据库中添加某些内容时 在 ajax 到 Submit to db php 之后 从数据库获取数据并刷新 main php 通过 draw polygon 更明显 所以基本上我有一个main php 它将ajax调用
  • 数据表在编辑后不记得分页页面

    我一直在使用 DataTable 服务器端处理 我的数据表有编辑列 当编辑链接时 单击 jQuery 对话框将出现 提交后对话框将关闭并调用 ajax reload 但是 当我在分页中执行此操作时 如果我在 ajax reload 之后在第
  • AS3 功能点击按钮后开始下载!

    我的网站需要一个 ActionScript 3 函数 让人们在单击按钮后下载文档 在网上任何地方都找不到这个 谢谢 詹妮弗 文件参考 下载 http livedocs adobe com flash 9 0 ActionScriptLang
  • 使用 64 位包编译 32 位 Qt 应用程序

    我使用的是 Windows 8 64 位 Qt 5 0 2 for Windows 64 位和 Visual Studio 2012 我在 64 位操作系统上编译和运行我的应用程序没有遇到任何问题 但显然它不适用于 32 位操作系统 有没有
  • 如何使用 JWT 为 Google firebase 生成身份验证令牌?

    所以我正在努力对 Firebase REST API 进行身份验证 https firebase google com docs database rest auth我正在使用蒸气框架 https vapor codes对于服务器端 swi
  • 存储过程中关键字 '.未闭合引号附近的语法不正确

    我有 2 个表和 2 个存储过程 在这两个存储过程中 我有相同的插入数据代码 从一个存储过程中 我在插入相同数据时收到错误 信息 Testing is going on Let s find out it 我将一个值从 C 代码隐藏直接传递
  • Polars的replace_time_zone函数抛出“没有这样的当地时间”的错误

    这是我们要使用的测试数据 import polars as pl import pandas as pd from datetime import date time datetime df pl DataFrame pl date ran
  • 带命名空间的 PHPUnit getMock()

    我对开始在 PHP 中使用名称空间的追求仍在继续 这次 PHPUnit 给我带来了问题 我的 setup 方法是这样的 test new MyNamespace NonPersistentStorage works mock this gt
  • 将多种日期格式解析为单一格式

    我有一个名为 已发布 日期 的专栏 正如您所看到的 它有多种日期格式和 nan 值 我想跳过 nan 值 将所有其他格式转换为 Y d 并忽略具有唯一年份的格式 我尝试了 df publish time pd to datetime df
  • 为什么Python语言没有writeln()方法?

    如果我们需要向文件写入新行 我们必须编写以下代码 file output write Fooo line n Python 没有任何原因吗 writeln method 在 Python 2 中 使用 print gt gt file ou
  • 使用 jQuery ajax 提交表单

    表单未使用 ajax form 在单击 li 时提交 给我一些解决方案 我的js代码在这里 document ready function sortable li click function frmgallery submit funct
  • 我可以使用 WiX 设置自定义许可证吗?

    WiX 生成的 MSI 的默认许可证是通用公共许可证 如何将其更改为 GPLv2 The Wix变量 http wix sourceforge net manual wix3 wix xsd wixvariable htm XML元素 ht
  • 使用 C# 从完整结果集变量获取数据到脚本任务

    我需要使用脚本任务将数据从 SQL 任务获取到 DataTable 对象以生成电子邮件 但是当我尝试使用 OLEDB 适配器填充任务填充数据时 它会生成错误 OleDbDataAdapter 内部错误 行集访问器无效 Ordinal 1 S