SSIS - 无法加载 DLL 'clrcompression.dll':找不到指定的模块
Posted
技术标签:
【中文标题】SSIS - 无法加载 DLL \'clrcompression.dll\':找不到指定的模块【英文标题】:SSIS - Unable to load DLL 'clrcompression.dll': The specified module could not be foundSSIS - 无法加载 DLL 'clrcompression.dll':找不到指定的模块 【发布时间】:2020-11-16 09:42:20 【问题描述】:我需要在 SSIS 中压缩一个数据文件夹。 为此,我使用了一个运行此脚本的脚本任务:
public void Main()
// TODO: Add your code here
try
string zipPath = (string)Dts.Variables["User::sFolderCompressed"].Value;
string startPath = (string)Dts.Variables["User::sFolderSource"].Value;
ZipFile.CreateFromDirectory(startPath, zipPath);
catch (Exception objException)
Dts.TaskResult = (int)ScriptResults.Failure;
// Log the exception
Dts.TaskResult = (int)ScriptResults.Success;
我设置的两个变量:
执行脚本任务步骤给我以下错误:
System.DllNotFoundException: 无法加载 DLL 'clrcompression.dll': 指定的模块无法找到。 (HRESULT 的例外情况: 0x8007007E) 在 Interop.inflateInit2_(Byte* 流,Int32 windowBits, Byte* 版本, Int32 stream_size) 在 System.IO.Compression.ZipFile.Open(字符串存档文件名, ZipArchiveMode 模式,编码 entryNameEncoding) 在 System.IO.Compression.ZipFile.DoCreateFromDirectory(字符串 sourceDirectoryName,字符串destinationArchiveFileName,Nullable`1 压缩级别,布尔值 includeBaseDirectory,编码 entryNameEncoding) 在 System.IO.Compression.ZipFile.CreateFromDirectory(字符串 sourceDirectoryName,字符串destinationArchiveFileName)在 ST_19ce97c462f844559ec30884173f5a28.ScriptMain.Main() 在 c:\Users\SQL\AppData\Local\Temp\3\Vsta\46892b1db29f45f2a8e1fb8c5d37a542\ScriptMain.cs:line 104
错误消息很清楚,我在某处缺少“clrcompression.dll”文件。 我可以下载这个DLL吗?我应该把它复制到哪里?
更新
添加了“执行流程任务”并设置以下内容:
Executable : 'powershell.exe'
Arguments : -nologo -noprofile
-command "Compress-Archive -Path E:\Flat Files\IT\StockAge\Stock Age Difference\MAINCHECKK807Babbage\BabbageStockAgeingPartno.csv
-DestinationPath E:\Flat Files\IT\StockAge\Stock Age Difference\MAINCHECKK807Babbage\BabbageStockAgeingPartno.zip"
但出现错误:
[执行进程任务] 错误:在执行“powershell.exe”“-nologo -noprofile -command "压缩-存档-路径 E:\Flat Files\IT\StockAge\Stock Age 差异\MAINCHECKK807Babbage\BabbageStockAgeingPartno.csv -DestinationPath E:\Flat Files\IT\StockAge\Stock Age Difference\MAINCHECKK807Babbage\BabbageStockAgeingPartno.zip"" at "", 进程退出代码为“1”,而预期为“0”。
更新 2
在 PowerShell 中执行脚本会出现以下错误。
【问题讨论】:
【参考方案1】:脚本任务只能访问已在您的GAC 中注册或在脚本中已在manually loaded 中注册的 DLL。如果您想使用脚本任务,您需要加载 DLL 以便脚本能够运行
或者,对于基本的 zip 功能,您可以使用命令行工具并从执行流程任务中调用它。如果你有最新的 Windows Server 并安装了所有 .net 框架,你可以尝试 PowerShell 方法,否则使用 7zip 方法
PowerShell 压缩方法
设置执行任务,使其调用 PowerShell 并在参数中传递您的 zip 指令
Executable = 'powershell.exe'
Arguments = Powershell -nologo -noprofile -command 'Compress-Archive -Path \"C:\SO\Test Folder\Test.txt\" -DestinationPath \"C:\SO\Test Folder\Test.zip\"'
编辑 1
如果你的路径有空格,那么你需要用反斜杠和双引号将它们转义
你的论点应该是
-nologo -noprofile -command 'Compress-Archive -Path \"E:\Flat Files\IT\StockAge\Stock Age Difference\MAINCHECKK807Babbage\BabbageStockAgeingPartno.csv\" -DestinationPath \"E:\Flat Files\IT\StockAge\Stock Age Difference\MAINCHECKK807Babbage\BabbageStockAgeingPartno.zip\"'
编辑 2
要调试命令,请尝试在 PowerShell 中运行它,如下所示,看看是否有任何其他信息
7Zip 方法
在将运行此软件包的所有服务器上安装 7zip 64 位
您需要确保服务器之间的安装目录匹配,否则ssis在部署时将找不到可执行文件
Executable = C:\Program Files\7-Zip\7z.exe
Arguments = a -r "C:\SO\Test Folder\Test.zip" "C:\SO\Test Folder\Test.txt"
【讨论】:
感谢您的回答 - 在尝试“执行流程任务”路线后,我已用错误更新了我的问题。请指教。 @PKirby 您的路径中有空格,因此您需要为它们添加引号,将更新我的答案 谢谢,我添加了建议的参数,但即使任务成功执行,zip 文件也不会创建。没有错误,所以不知道如何解决这个问题。有什么建议吗? 如果您尝试在 PowerShell 中运行该命令,它会为您提供任何其他信息吗?查看从 PowerShell 运行命令的更新屏幕截图。 我将使用 7zip 解决方案更新我的答案,可执行文件需要是 7zip 命令行工具,该字段上会有一个浏览按钮,浏览到已安装的文件夹并选择 7z.exe参数应该是:a -r "C:\SO\Test Folder\Test.zip" "C:\SO\Test Folder\Test.txt"【参考方案2】:clrcompression.dll 是 .NET Framework 的一部分。
我认为您需要检查您机器上的 .NET Framework 安装情况。
【讨论】:
以上是关于SSIS - 无法加载 DLL 'clrcompression.dll':找不到指定的模块的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 SSIS 快速加载选项从 Excel 源加载 Netezza 中的数据