ssis的script task作业失败(调用外部dll)

原文 ssis的script task作业失败

我的ssis作业包里用了一个script task,会查询一个http的页面接口,获取json数据后解析然后做后续处理,其中解析json引用了本地目录下的第三方的类库:Newtonsoft.Json.dll

在vs环境中调试包的时候报错

?


1

2

3

4

5

 在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)

   在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)

   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

   在 System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)

   在 Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

检查后发现:dll没有正确注册,需要做如下操作:

  1. 将dll拷贝到sqlserver的程序目录中,我的sqlserver是2012,版本号就是110,则文件需要拷贝到...\110\DTS\PipelineComponents目录中
  2. 向将类库注册到.net framework gac中,注册工具室gacutil.exe,因为我的dll是基于.net 4.0的,所以也需要使用4。0的gacutil,但是.net framework 只有1.1才有这个工具,版本却不对,不过这个工具在visual studio的安装中带了,我的vs版本为2012,则在系统应用程序目录下可以找到,我的目录是C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin中可以找到gacutil.exe,执行 gacutil.exe /i ***.dll,成功注册,再执行ssis package,不再出现以上错误。

C:\WINDOWS\system32>cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools>gacutil.exe /i C:\Users\LAY\Desktop\Newtonsoft.Json.dll Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.18020 版权所有(C) Microsoft Corporation。保留所有权利。

程序集已成功添加到缓存中

====================

批处理文件:

@SET GACUTIL="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe"
Echo Install the dll into GAC
%GACUTIL% -if C:\Users\LAY\Desktop\Newtonsoft.Json.dll
pause
时间: 2024-10-06 14:25:08

ssis的script task作业失败(调用外部dll)的相关文章

C#调用外部DLL介绍及使用详解

一.      DLL与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文件,Windows就是将一些主要的系统功能以DLL模块的形式实现. 动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能被程序或其它DLL调用来完成一定操作的函数(方法.注:C#中一般称为“方法”),但这些函数不是执行程序本身的一部分,而是根

在VS工程里编译dll / 调用外部dll

这个问题昨天请教了一下大神,记录之. 1.编译dll 创建一个新项目,Win32控制台应用程序,这里选DLL.这样的话编译过后会自动在Debug目录下生成dll文件. 这样,会生成如下的目录: 其中头文件里的第2.3个是自动生成的,源文件里的1.3个是自动生成的. 我们只需要改动: 在DllWithClass.h里写: extern "C" _declspec(dllexport)//导出 float FunctionMultiply(float x, float y); 这里第一行是

微软 BI ssis 中的 script task中用代码直接调用 WCF / Webservice

背景: 在普通的C#项目中,可以直接调用 WCF / Webservice: 在微软BI的 ssis中,有 webservice任务组件,也可以直接调用简单的 WCF / Webservice; 偶这边的情况是,后端的 WCF中用的反射,所以在 ssis中的webservice任务组件中,死活不能识别 WCF对应的方法. 所以只能在ssis的 script task组件中,用纯代码的方式来调用WCF服务. 就这样,可能还是有问题:可能会碰到 不能识别 System.ServiceModel节点的

Atitit.java jna 调用c++ dll 的总结

Atitit.java jna 调用c++ dll 的总结 1. JNA技术解密1 1.1. JNA工作原理1 2. JNA技术难点 Java—C和操作系统数据类型的对应表1 2.1. 1 2.2. JNA编程过程3 2.2.1. 跨平台.跨语言调用的第一原则:就是尽量使用基本.简单的数据类型,尽量少跨语言.平台传递数据!4 3. 参考4 1. JNA技术解密 1.1. JNA工作原理 JNA是建立在JNI技术基础之上的一个Java类库,它使您可以方便地使用java直接访问动态链接库中的函数.

SSIS ->> Script Task

利用Script Task,我们可以做一些本身SSIS没能满足我们的,或者实现起来效果不够理想的.比如说我们想做一件这样的事情,去检查某个文件是否为空.如果我们通过Row Count组件来实现,性能上不理想,因为我又并不需要要知道究竟文件包含多少行数据.我们只需要简单地知道文件是否包含数据.我们可以通过写C#代码,去调用BinaryStream的方法来读取该文件的前几行就可以确定是否文件包含数据.总的来说,Script Task能做事情分几类:1) 读取和改变包的变量:2)读取包的属性:3)用C

微软BI 之SSIS 系列 - 使用 Script Task 访问非 Windows 验证下的 SMTP 服务器发送邮件

开篇介绍 大多数情况下我们的 SSIS 包都会配置在 SQL Agent Job 中周期性的按计划执行,比如每天晚上调用 SSIS 包刷新数据,处理 Cube 等.一旦 SSIS 包中出现任何异常,报错,那么配置在 SQL Agent Job 中的通知,邮件提醒就会把这些错误信息发邮件到指定的用户或者系统维护者,这样就起到了一个错误监控的作用. 但是在有的情况下,有一些自定义的 SSIS 调度框架的计划调度都不是通过 SQL Agent Job 配置来完成的.比如我以前在一个小项目中设计过一个

using SSIS script task to send email result

sometimes notification email is required to be sent so that receivers can know about the data load status. Following C# code in SSIS script task is composed to meet the requirement. 1. drag a SQL task to get data result and assigned full set to an ob

转 Refresh Excel Pivot Tables Automatically Using SSIS Script Task

Refresh Excel Pivot Tables Automatically Using SSIS Script Task https://www.mssqltips.com/sqlservertip/5946/refresh-excel-pivot-tables-automatically-using-ssis-script-task/ 原文地址:https://www.cnblogs.com/Tonyyang/p/10468749.html

windows下调用外部exe程序 SHELLEXECUTEINFO

本文主要介绍两种在windows下调用外部exe程序的方法: 1.使用SHELLEXECUTEINFO 和 ShellExecuteEx SHELLEXECUTEINFO 结构体的定义如下: 1 typedef struct _SHELLEXECUTEINFO { 2 DWORD cbSize; 3 ULONG fMask; 4 HWND hwnd; 5 LPCTSTR lpVerb; 6 LPCTSTR lpFile; 7 LPCTSTR lpParameters; 8 LPCTSTR lpD