【问题标题】:SQL Server Agent Error - Exception has been thrown by the target of an invocationSQL Server 代理错误 - 调用的目标已引发异常
【发布时间】: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


【解决方案1】:

权限访问出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多