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 中的数据

SSIS 包 - 由于错误 0xC0014062 无法加载包

SSIS Excel连接“无法加载任何表或视图”

SSIS 2016与Jenkins一起构建

从脚本组件 (SSIS) 调试 .NET dll

SSIS 加载列数(精度、比例)