简体   繁体   中英

“Runtime error Exception has been thrown by the target of an invocation” from Script task

I have a SSIS package with a script task, I get the following error when i try to run it in my local system. It works fine for my collegues as well as in production. However, I am not able to run it locally, to test. I keep a debug point in the main method, but it is never reached, I get the error before it goes to main method.

在此处输入图片说明

I am using VS 2010, .Net framework 4.5.

The script task does compile. I get the following messages SSIS package "..\\Test.dtsx" starting. Error: 0x1 at Test: Exception has been thrown by the target of an invocation. Task failed: Test SSIS package "..\\Test.dtsx" finished: Success. The program '[2552] DtsDebugHost.exe: DTS' has exited with code 0 (0x0).

The following is the code:

public void Main()
{
try
{
 LogMessages("Update Bug package execution started at :: " + DateTime.Now.ToLongTimeString());
 LogMessages("Loading package configuration values to local variables.");

strDBConn = Dts.Variables["User::DBConnection"] != null ? Dts.Variables["User::DBConnection"].Value.ToString() : string.Empty;
strTPCUrl = Dts.Variables["User::TPCUrl"] != null ? Dts.Variables["User::TPCUrl"].Value.ToString() : string.Empty;

TfsTeamProjectCollection objTPC = new TfsTeamProjectCollection(new Uri(strTPCUrl));
WorkItemStore objWIS = new WorkItemStore(objTPC);
WorkItemCollection objWIC = objWIS.Query("SELECT...");

foreach (WorkItem wi in objWIC)
{
}

}
catch(Exception ex)
{
}

When I commented the code from TfsTeamProjectCollection objTPC = new TfsTeamProjectCollection(new Uri(strTPCUrl)); The script executes successfully. However, if i keep TfsTeamProjectCollection objTPC = new TfsTeamProjectCollection(new Uri(strTPCUrl)); and comment the rest, i get the exception. I do have access to the URL.

I am using Microsoft.TeamFoundation.Client.dll and Microsoft.TeamFoundation.WorkItemTracking.Client.dll, in my script task. However the dll version in the package is 10.0, and the version of the dll in my GAC is 12.0. Would that cause a problem?

I had the same Problem (ie the same error code Error: 0x1 ...).

The issue was with some of the libraries referenced from a missing folder.

Removing the references and adding them back from the correct path fixed the issue.

The Microsoft Reference ( https://msdn.microsoft.com/en-us/library/ms345164.aspx ) related to the Error code is very generic and doesn't help you much. However, reading other articles it is quite likely it indicates an unknown failure reason to run the Script Task.

  • Hexadecimal code: 0x1
  • Decimal Code: 1
  • Symbolic Name: DTS_MSG_CATEGORY_SERVICE_CONTROL
  • Description: Incorrect function.

当添加对dll版本12.0.0的引用并将目标框架更改为.Net Framework 4.5时,它已修复

当我在Dts.Variables [“ User :: xxxx] .Value();中引用传递的ssis变量时,收到此错误消息;其中xxxx不存在,也不是从调用程序传递过来的。这是一个简单的Console.Writeline指的是不存在的传递变量。

This is just a different situation and not intended to be the end all be all solution for everyone.

When I was installing my DLLs into the GAC I forgot to run my script as Administrator and the script ran silently without error as though it was working.

I felt really dumb when I realized that's what I did wrong. Hopefully this can help prevent other people from wasting time on something so silly.

For reference this is what I use for installing my DLLs into the GAC and I modified it to tell me when I am not running it as Administrator now:

#https://superuser.com/questions/749243/detect-if-powershell-is-running-as-administrator
$isAdmin = ([Security.Principal.WindowsPrincipal] `
  [Security.Principal.WindowsIdentity]::GetCurrent() `
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if($isAdmin -eq $false)
{
    Write-Host "You have to run this script as Administrator or it just won't work!" -ForegroundColor Red

    return;
}

$strDllPath = "C:\PathToYourDllsHere\"

#Note that you should be running PowerShell as an Administrator
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")            
$publish = New-Object System.EnterpriseServices.Internal.Publish            


$arr = @(
    "YourDLL01.dll",
    "YourDLL02.dll",
    "YourDLL03.dll"
)

get-date

foreach($d in $arr)
{
    $p = ($strDllPath + $d);

    $p

    $publish.GacInstall($p);
}

#If installing into the GAC on a server hosting web applications in IIS, you need to restart IIS for the applications to pick up the change.
#Uncomment the next line if necessary...
#iisreset

Credit for how to determine if your PowerShell script is running in Admin mode or not: https://superuser.com/questions/749243/detect-if-powershell-is-running-as-administrator

I fixed this error by changing the TargetServerVersion of the SSIS Project .

Integration Services Project Property Pages

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM