【发布时间】:2021-02-25 18:44:41
【问题描述】:
我正在 SSIS 中执行脚本任务并使用 SSIS 代理安排任务。
我能够成功执行脚本任务,但是当我尝试通过 SQL Server 代理运行它时出现错误 -
错误
错误:2020-11-13 12:31:29.64 代码:0x00000001 来源:脚本任务 说明:调用的目标已引发异常。 结束错误
SSIS脚本任务查询如下-
#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Microsoft.CSharp;
#endregion
namespace ST_24e25f722fa240eba22f16d2b24cc864
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
string filePath = Dts.Variables["varExcelFiles"].Value.ToString();
//Define Excel File
#region
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Workbook excelWorkbook = excel.Workbooks.Open(filePath);
_Worksheet excelWorksheet = excelWorkbook.Sheets[1];
#endregion
//Modify Excel Files Delete Rows, Unmerge
#region
Range range = excelWorksheet.get_Range("A1:A7");
Range entireRow = range.EntireRow;
entireRow.Delete(XlDeleteShiftDirection.xlShiftUp);
Range range2 = excelWorksheet.get_Range("A2");
Range entireRow2 = range2.EntireRow;
entireRow2.Delete(XlDeleteShiftDirection.xlShiftUp);
excelWorksheet.Range["A:Z"].UnMerge();
Range range3 = excelWorksheet.get_Range("S1");
Range entireColumn = range3.EntireColumn;
entireColumn.Delete(XlDeleteShiftDirection.xlShiftToLeft);
Range range4 = excelWorksheet.get_Range("T1:U1");
Range entireColumn2 = range4.EntireColumn;
entireColumn2.Delete(XlDeleteShiftDirection.xlShiftToLeft);
Range range5 = excelWorksheet.get_Range("V1:Z1");
Range entireColumn3 = range5.EntireColumn;
entireColumn3.Delete(XlDeleteShiftDirection.xlShiftToLeft);
int rowCnt2 = 0;
rowCnt2 = excelWorksheet.Cells.Find("*", System.Reflection.Missing.Value,
System.Reflection.Missing.Value, System.Reflection.Missing.Value,
XlSearchOrder.xlByRows, XlSearchDirection.xlPrevious,
false, System.Reflection.Missing.Value, System.Reflection.Missing.Value).Row;
Range range6 = excelWorksheet.get_Range("A" + rowCnt2);
Range entireRow3 = range6.EntireRow;
entireRow3.Delete(XlDeleteShiftDirection.xlShiftUp);
#endregion
//Save and Close Excle File
#region
excel.DisplayAlerts = false;
excelWorkbook.SaveAs(@"C:\Packages\SourceFile\CGReport\srcChangeGearMatheson.xlsx");
excel.DisplayAlerts = true;
excelWorkbook.Close();
excel.Quit();
#endregion
Dts.TaskResult = (int)ScriptResults.Success;
}
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
}
}
【问题讨论】:
-
您是否在执行包的服务器上安装了 Office/Excel,并且执行包的方式与 Office 安装相同(64 对 32)?
-
是的,服务器是一样的。比特也是一样的。我有其他包在 SQL Server 代理中成功运行,但它们没有脚本任务。在我有脚本任务的包中遇到问题
标签: ssis sql-server-agent script-task