gpt4 book ai didi

sql - 在自定义 SSIS 任务中执行 SQL 的首选方式是什么?

转载 作者:行者123 更新时间:2023-12-01 12:01:06 27 4
gpt4 key购买 nike

我正在编写一个自定义 SSIS 任务,作为其功能之一,应该在数据库连接上执行存储过程。我似乎找不到有关如何完成此操作的任何信息。

我正在使用 ADO.NET 连接管理器连接到数据库,我希望用 C# 编写我的任务。

在自定义 SSIS 任务中执行 SQL 的首选方式是什么?

最佳答案

这个问题的答案在某种程度上取决于您用来连接数据库的连接管理器,但是一般方法是相同的:

  1. 使用 Connections 在您的自定义任务中获取相关的连接管理器Package 对象的属性。
  2. 调用AcquireConnection连接管理器上的方法以获取与数据库的连接。
  3. 使用提供的连接执行您的 SQL 语句。

此方法允许您利用 SSIS 提供的连接配置和管理。

对于 ADO.NET 连接管理器,可以使用以下代码:

public override DTSExecResult Validate(
Connections connections, VariableDispenser variableDispenser,
IDTSComponentEvents componentEvents, IDTSLogging log)
{
// Validate connection exists.
if(!connections.Contains("YourConnection"))
{
componentEvents.FireError(0, "CustomTask",
"Invalid connection manager.", "", 0);
return DTSExecResult.Failure;
}

return DTSExecResult.Success;
}

public override DTSExecResult Execute(Connections connections,
VariableDispenser variableDispenser, IDTSComponentEvents componentEvents,
IDTSLogging log, object transaction)
{
ConnectionManager cm = connections["YourConnection"];

try
{
SqlConnection connection
= cm.AcqureConnection(transaction) as SqlConnection;

if(connection == null)
{
componentEvents.FireError(0, "CustomTask",
"Failed to acquire ADO.NET connection.", "", 0);
Return DTSExecResult.Failure;
}

// TODO: Use connection to execute SQL.
}
catch(Exception ex)
{
componentEvents.FireError(0, "CustomTask",
ex.Message, "", 0);

Return DTSExecResult.Failure;
}
}

你会想要一些更好的错误处理,我不确定如何处理连接的生命周期,你是应该手动打开它还是在使用后丢弃。

祝你好运!

关于sql - 在自定义 SSIS 任务中执行 SQL 的首选方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com