我正在尝试使用SSIS中的C#任务脚本将文件从FTP服务器复制到本地驱动器。该脚本在SQL Studio 2008 R2中运行良好,但是使用SQL SSDT(SQL Server数据工具)2015对该版本进行了2016年更新,当我第一次执行该脚本时,它运行正常,但后来抛出以下错误:
错误:3复制并重命名EC文件时为0x1:调用的目标引发了异常。任务失败:3-复制并重命名EC文件
我阅读了几篇文章,并了解到响应者通过添加对dll版本12.0.0的引用来解决此问题,并将目标框架更改为.Net Framework 4.5。
当前我的目标框架是.Net Framework 4.5。
如何停止收到此错误?
我在应用程序的哪里可以找到dll引用来进行更改?
感谢您的帮助。
我的C#程序如下所示:
using System;
using System.IO;
namespace ST_d70bfcb8d94b40849d1d525fe3731f14.csproj
{
[Microsoft.SqlServer
.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
#region VSTA generated code
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
public void Main()
{
string fileDate = string.Format("{0:d4}", DateTime.Today.Year).ToString() + string.Format("{0:d2}", DateTime.Today.Month).ToString() + "13";
string src1FileName = @"\\Slocation03\Reports\SSI224-069_" + fileDate + ".txt";
string des1FileName = @"\\Slocation03\Reports\EContacts\SSI224-069.txt";
string src2FileName = @"\\Slocation03\Reports\SSI224-071_" + fileDate + ".txt";
string des2FileName = @"\\Slocation03\Reports\EContacts\SSI224-071.txt";
if (File.Exists(src1FileName))
{
File.Copy(src1FileName, des1FileName, true);
}
if (File.Exists(src2FileName))
{
File.Copy(src2FileName, des2FileName, true);
}
Dts.TaskResult = (int)ScriptResults.Success;
}
}
}
答案 0 :(得分:1)
该错误可能是由于从UNC路径读取或写入本地文件的权限问题引起的,请尝试添加try ... catch块以读取真正的异常,因为以下异常是通用的:
调用的目标抛出了异常
尝试使用以下代码:
public void Main()
{
try{
string fileDate = string.Format("{0:d4}", DateTime.Today.Year).ToString() + string.Format("{0:d2}", DateTime.Today.Month).ToString() + "13";
string src1FileName = @"\\Slocation03\Reports\SSI224-069_" + fileDate + ".txt";
string des1FileName = @"\\Slocation03\Reports\EContacts\SSI224-069.txt";
string src2FileName = @"\\Slocation03\Reports\SSI224-071_" + fileDate + ".txt";
string des2FileName = @"\\Slocation03\Reports\EContacts\SSI224-071.txt";
if (File.Exists(src1FileName))
{
File.Copy(src1FileName, des1FileName, true);
}
if (File.Exists(src2FileName))
{
File.Copy(src2FileName, des2FileName, true);
}
Dts.TaskResult = (int)ScriptResults.Success;
}catch(Exception ex){
Dts.FireError(0,"An error occured", ex.Message,String.Empty, 0);
Dts.TaskResult = (int)ScriptResult.Failure;
}
}
参考