Mud*_*san 6 sql-server dll ssis etl script-task
我使用EPPlus.dll库动态生成Excel文件以进行附件,并在SSIS包的脚本任务中生成邮件程序.
当邮件程序中有新的更改要求时,我在本地计算机上执行脚本任务更改,并将构建的包文件(.dtsx)发送给DBA团队进行部署.
现在每次我都要请DBA团队与我共享生产服务器屏幕,我在哪里:
然后,他们从MSDB中导入包文件,从那里调度作业引用并执行包.
如果我不执行上述步骤,则脚本任务会引发未找到引用的错误.
错误1找不到类型或命名空间名称'OfficeOpenXml'(您是否缺少using指令或程序集引用?)
我克服了在脚本任务中引用的GAC中安装DLL的挑战,方法是动态加载程序集,如下所示'
public void Main()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
private System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return System.Reflection.Assembly.LoadFrom(System.IO.Path.Combine(strDLLPath, "EPPlus.dll"));
}
Run Code Online (Sandbox Code Playgroud)
但我,无法找到避免手动浏览和添加DLL引用的步骤.请帮助,因为DBA团队不愿意/避免共享屏幕.
或者,如果我没有直接访问生产服务器,那么在使用外部dll的服务器上部署包文件的正确/最佳实践方法是什么.
我认为从集成服务包中没有直接的方法可以做到这一点,因为您可以做到的唯一解决方法是 - (使用CurrentDomain_AssemblyResolve函数完成的工作) - 从某个位置加载程序集而不是将其安装到GAC中.
在部署中有三种使用自定义dll的方法:
AssemblyResolve功能C:\Program Files\Microsoft SQL Server\100\DTS\Binn)和.NET框架组件文件夹.如果问题是要求屏幕共享,您可以创建一个小型安装向导,将这些dll复制到特定位置,并要求dba团队执行它.
解决方法
在搜索此问题时,我通过使用Web服务而不是直接dll找到了一个有趣的解决方法,因此您可以创建包含您正在使用的方法的Web服务并添加Web引用而不是本地程序集
旁注:我之前没有尝试过这种方法,但我只是想帮忙
有用的链接和参考
| 归档时间: |
|
| 查看次数: |
1640 次 |
| 最近记录: |