SSIS执行Script Task时报DTS Script Task运行时错误求助
SSIS Execute Script Task 调用Microsoft.WindowsAzure.Storage类库报错解决方案
问题根因定位
你遇到的未进入断点直接崩溃的现象,本质是脚本任务运行初始化阶段加载依赖程序集失败,还没执行到你写的业务代码就已经终止,属于类库加载层面的错误,和你写的业务逻辑本身无关。
排查修复步骤
- 确认程序集是否注册到GAC
SSIS脚本任务运行时默认只从*全局程序集缓存(GAC)*加载第三方依赖,仅在Visual Studio脚本项目中添加本地引用,运行时会找不到库直接崩溃。你需要将用到的Microsoft.WindowsAzure.Storage.dll和其所有依赖dll全部注册到运行环境的GAC中,注册命令如下:
gacutil /i "你的dll本地路径\Microsoft.WindowsAzure.Storage.dll"
- 核对.NET版本兼容性
检查脚本任务配置的.NET Framework版本和Microsoft.WindowsAzure.Storage要求的最低.NET版本是否匹配,旧版Azure存储SDK仅支持.NET Framework 4.0及以上版本,如果你的脚本设置的.NET版本低于要求,会直接触发加载失败。 - 捕获完整异常信息定位问题
将调用Azure存储的代码包裹在try-catch块中,捕获Exception后将异常ToString()的完整信息输出到SSIS日志或者Windows事件查看器,即可拿到具体的错误原因(是程序集缺失、版本不匹配还是权限不足)。 - 配置程序集绑定重定向
如果运行环境中存在多个版本的Microsoft.WindowsAzure.Storage.dll,需要在脚本项目的app.config文件中添加绑定重定向规则,强制运行时加载你使用的对应版本,示例配置:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-[你使用的版本号]" newVersion="[你使用的版本号]" /> </dependentAssembly> </assemblyBinding> </runtime>
- 类库替换优化建议
Microsoft.WindowsAzure.Storage已经被官方弃用,如果你要长期维护该SSIS包,建议替换为最新的Azure.Storage.Blobs等拆分后的官方SDK,新版本SDK的兼容性更强,依赖更少,出现加载异常的概率更低。
内容的提问来源于stack exchange,提问作者Przemysław Popławski
相关产品推荐
相关产品推荐

