gpt4 book ai didi

c# - 调用目标抛出异常 - 在 Visual Studio 中执行 .dtsx 文件时

转载 作者:太空宇宙 更新时间:2023-11-03 12:02:10 26 4
gpt4 key购买 nike

我开发了一个 ssis 包,我有一个脚本,它从 .txt 文件中获取一些文本命令,将它们存储在变量中,我使用这些变量来查看下一步要做什么以及要执行哪个 dft。

当我转到 .dtsx 文件时 --> 右键单击​​ --> 执行 --> 我收到错误消息“调用的目标已抛出异常。”

enter image description here

然而,当我停止运行包并尝试重新执行它时,它运行成功。

我尝试将它部署到 Integration Services Catalogs,它抛出了我在报告文件中看到的相同错误

Script task error: exception has been thrown by the target of an invocation

varERMLoadTxt 保存流读取器读取的文本文件路径

public void Main()
{
// TODO: Add your code here
string path = Dts.Variables["User::varERMLoadTxt"].Value.ToString();
using (StreamReader sr = File.OpenText(path))
{
string line = File.ReadAllText(path);
string[] lines = line.Split(',');
if(lines[0].Equals("load", StringComparison.CurrentCultureIgnoreCase))
Dts.Variables["User::varIsLoad"].Value = true;
else if (lines[0].Equals("update", StringComparison.CurrentCultureIgnoreCase))
Dts.Variables["User::varIsUpdate"].Value = true;
Dts.Variables["User::varCommand"].Value = lines[0].ToString();
Dts.Variables["User::varAnalysisDate"].Value = lines[1].ToString();
sr.Close();



}
Dts.TaskResult = (int)ScriptResults.Success;
}

enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};

最佳答案

我有3个建议:

  1. 使用 try ... catch block 和 Dts.FireError 方法读取真正的异常:
  1. 打开文件前检查文件是否存在
  2. 检查变量名是否正确(注意变量名区分大小写)

整个代码应该是这样的

public void Main()
{
try{

string path = Dts.Variables["User::varERMLoadTxt"].Value.ToString();

if (File.Exists(path))
{
using (StreamReader sr = File.OpenText(path))
{
string line = File.ReadAllText(path);
string[] lines = line.Split(',');

if(lines[0].Equals("load", StringComparison.CurrentCultureIgnoreCase))
Dts.Variables["User::varIsLoad"].Value = true;
else if (lines[0].Equals("update", StringComparison.CurrentCultureIgnoreCase))
Dts.Variables["User::varIsUpdate"].Value = true;

Dts.Variables["User::varCommand"].Value = lines[0].ToString();
Dts.Variables["User::varAnalysisDate"].Value = lines[1].ToString();
sr.Close();
}
}

Dts.TaskResult = (int)ScriptResults.Success;

}catch(Exception ex){

Dts.FireError(0,"An error occured", ex.Message,String.Empty, 0);
Dts.TaskResult = (int)ScriptResults.Failure;

}

}

enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};

关于c# - 调用目标抛出异常 - 在 Visual Studio 中执行 .dtsx 文件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598894/

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