【问题标题】:Can SSIS connect to an instance of a C# class to extract data directly?SSIS 可以连接到 C# 类的实例以直接提取数据吗?
【发布时间】:2017-06-10 03:28:09
【问题描述】:

我是一名新的 C# 开发人员,请多多包涵。我的桌面应用程序中有一个 DisplayUserDetails 类,它是用 .NET C#(非常基本)创建的。它有许多显示输出的方法,例如 UserName、UserGeography、UserPreferences 等。我正在评估创建 API 以在公司内部使用的选项,或者以某种方式直接通过类使用 SSIS 提取数据(无 API) .在 .NET 代码中,我会编写类似这样的内容来创建该类的新实例:

private Employee.DisplayUserDetails dUsrDtls

在 SSIS 或任何其他 ETL 工具中是否有方法可以直接连接到类以提取数据?

有什么可以做的吗?或者我可以在这里完全偏离轨道吗?

谢谢!

【问题讨论】:

  • SSIS 是如何进入这个领域的?除非您以某种方式公开它(即使用 API),否则任何 SSIS 都无法从运行时类中提取数据。但是您必须从其他地方将数据加载到此类中。使用 SSIS 访问班级中的数据后,您将把它放在哪里?这一切的目的是什么?
  • 感谢您的回复。实际上,我真正需要做的是对数据进行实时操作,并最终在报表工具(即 Tableau)中公开它。为了提供更多上下文,我想让其他开发人员能够为他们的自定义报告提取数据,而无需让他们直接访问数据库。
  • 我建议您为此使用视图或存储过程。 SSIS 和 ETL 不适合向报告工具提供数据

标签: c# sql .net ssis etl


【解决方案1】:

我想让其他开发人员能够为他们的自定义报告提取数据,而无需让他们直接访问数据库

您可以通过 Web 服务、API、文件转储等公开它。要通过 SSIS 来实现,我会编写一个控制台程序并写入一个 csv 文件。

class Program {
    static void Main(string[] args) {
        var myClass = new EmployDetails(args);
        // write to file

        // trigger a tableau refresh service
        // anything, really
    }
}

【讨论】:

  • 谢谢凯尔。这很有帮助,尽管我刚刚意识到他们需要提取然后将其存储在某个数据库中,因为他们将针对它进行报告(大型数据集)。所以说真的,感觉最好的选择是为它创建一个 API,这样他们就可以访问它。你怎么看?
【解决方案2】:

如果您想在 API 后面公开数据库以供报告工具使用,最直接且经过验证的方法是使用视图和存储过程。 或者更简单,只允许通过具有特定安全访问权限的用户进行连接(例如只读访问权限,无权访问某些表。

SSIS 在这里没有增加任何价值,只是使事情复杂化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-16
    • 2018-05-31
    • 1970-01-01
    • 2023-03-21
    • 2021-01-23
    • 1970-01-01
    • 2018-08-01
    相关资源
    最近更新 更多