访问 Int 变量时 SSIS 出现异常
SSIS Getting Exception When Accessing Int Variable
我正在尝试创建一个脚本来即时生成我需要的文件夹。
该脚本采用 FolderName
和 OrderID
变量来生成要创建的文件夹名称。我将它们添加到脚本的只读变量中。
FolderName
一切正常,只有当我尝试访问 OrderID
变量时,事情才会崩溃。我在下面收到讨厌的异常错误。
public void Main()
{
// Output File Expression
// "" + @[User::FolderName]+"\Folder_"+ (DT_WSTR,20) @[User::T1_ID] +"\SalesOrderHeader_T1_"+ (DT_WSTR,20) @[User::T1_ID]+ ".txt"
String folderName = (string)Dts.Variables["User::FolderName"].Value;
String OrderIDStr = (string)Dts.Variables["User::OrderID"].Value;
System.Windows.Forms.MessageBox.Show(OrderIDStr, "OrderID Var");
folderName = string.Concat(folderName, "\Folder_");
System.Windows.Forms.MessageBox.Show(folderName, "Folder Name");
try
{
// Determine whether the directory exists.
if (Directory.Exists(folderName))
{
Console.WriteLine("That path exists already.");
System.Windows.Forms.MessageBox.Show("That path exists already.", "WARNING");
return;
}
// Try to create the directory.
DirectoryInfo di = Directory.CreateDirectory(folderName);
Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(folderName));
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
finally { }
}
我在包级别将值设置为 1
,并将其转换为字符串,所以我不确定问题出在哪里。
文本在框中被截断,这里是所有内容:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at system.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object
obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke
(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo
culture) at System.RuntimeType.InvokeMember(String name, BindingFlags
bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[]
modifiers, CultureInfo culture, String[] namedParams) at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
尝试使用 .ToString()
方法而不是转换 (string)
String OrderIDStr = Dts.Variables["User::OrderID"].Value.ToString();
基于此 article,不允许从 int
显式转换为 string
。
参考资料
- Casting to string versus calling ToString
- Explicit numeric conversions table (C# Reference)
- Casting and type conversions (C# Programming Guide)
我正在尝试创建一个脚本来即时生成我需要的文件夹。
该脚本采用 FolderName
和 OrderID
变量来生成要创建的文件夹名称。我将它们添加到脚本的只读变量中。
FolderName
一切正常,只有当我尝试访问 OrderID
变量时,事情才会崩溃。我在下面收到讨厌的异常错误。
public void Main()
{
// Output File Expression
// "" + @[User::FolderName]+"\Folder_"+ (DT_WSTR,20) @[User::T1_ID] +"\SalesOrderHeader_T1_"+ (DT_WSTR,20) @[User::T1_ID]+ ".txt"
String folderName = (string)Dts.Variables["User::FolderName"].Value;
String OrderIDStr = (string)Dts.Variables["User::OrderID"].Value;
System.Windows.Forms.MessageBox.Show(OrderIDStr, "OrderID Var");
folderName = string.Concat(folderName, "\Folder_");
System.Windows.Forms.MessageBox.Show(folderName, "Folder Name");
try
{
// Determine whether the directory exists.
if (Directory.Exists(folderName))
{
Console.WriteLine("That path exists already.");
System.Windows.Forms.MessageBox.Show("That path exists already.", "WARNING");
return;
}
// Try to create the directory.
DirectoryInfo di = Directory.CreateDirectory(folderName);
Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(folderName));
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
finally { }
}
我在包级别将值设置为 1
,并将其转换为字符串,所以我不确定问题出在哪里。
文本在框中被截断,这里是所有内容:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at system.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke (Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
尝试使用 .ToString()
方法而不是转换 (string)
String OrderIDStr = Dts.Variables["User::OrderID"].Value.ToString();
基于此 article,不允许从 int
显式转换为 string
。
参考资料
- Casting to string versus calling ToString
- Explicit numeric conversions table (C# Reference)
- Casting and type conversions (C# Programming Guide)