【发布时间】:2016-05-16 19:48:42
【问题描述】:
我在 SSIS 上遇到了一个非常奇怪的问题,想知道其他人是否也遇到过类似的问题。
在数据流中,我有一个源,它从 MSSQL 表中获取数据,然后将其提供给数据转换脚本任务。
脚本任务如下:
脚本任务
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
string SecurityHeader = (string)Variables.SecurityHeader;
string APIToken = (string)Variables.APIToken;
var AppFormID = (string)Row.AppFormID;
var AppClassName = (string)Row.AppClassName;
var Lat = Row.Latitude;
var Long = Row.Longitude;
var data = new
{
record = new
{
status = Row.Status.ToString(),
latitude = Row.Latitude,
longitude = Row.Longitude,
form_values = new Dictionary<string, string>()
}
};
if (Row.CreatedBy_IsNull == false) { data.record.form_values["1a09"] = Row.CreatedBy.ToString(); }
string jsonstring = JsonConvert.SerializeObject(data);
var client = new RestClient(AppURLRef);
var request = new RestRequest(Method.POST);
request.AddHeader(SecurityHeader, APIToken);
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", jsonstring, ParameterType.RequestBody);
try
{
IRestResponse dataresponse = client.Execute(request);
if (dataresponse.StatusCode.ToString() == "Created")
{
var listobject = JsonConvert.DeserializeObject<Lists>(dataresponse.Content);
}
else
{
Row.OErrorMsg = dataresponse.ErrorMessage.ToString();
};
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + " Data: " + ex.Data + " Inner Exception: " + ex.InnerException);
}
}
问题
当我在没有任何断点的情况下运行它时,我得到一个消息框,错误为 “输入字符串格式不正确”
真正奇怪的地方在于,当我在代码中设置断点时,代码运行良好,因此不可能出现行错误。
以前有没有人遇到过这样的问题,如果有,您是如何解决的?
更新
在遵循一些建议后,我将 try catch 块移到了脚本的开头,这导致 try catch 块从未被命中。
我试图在输入进程行的最顶部添加一个MessageBox.Show(""),但同样没有命中。发生的事情比这两个想法都高,我无法找出这是在哪里或如何发生的。
再次重申错误是在 MessageBox 中,而不是在输出中,并且没有任何内容记录在进程选项卡中。因此,这意味着没有行号,也没有有用的错误消息来讨论此错误发生的位置。
【问题讨论】:
-
当错误弹出时它会显示行号。另外,您能否检查两个转换部分的数据类型,它应该具有适当的值才能获得转换。
-
不确定影响失败/成功的断点,但尝试扩大 try 块的范围。将开始语句移动到
string SecurityHeader之前的行 -
@billinkc - 好主意,但又不行,包括整个脚本,什么也没有。我还在脚本的最顶部添加了一个消息框,并且由于某种原因它永远不会被击中。更高级别的事情正在发生......只是不确定在哪里
-
@sumngh 不怕,如果我有行号我就不会问这个问题了
-
Define "nothing" 出错还是没遇到错误?
标签: c# sql-server ssis