1

我正在运行下面的 Powershell

Export-DbaInstance -SqlInstance xxxxxx\xxxxxx -ExcludePassword -Exclude databases -Path \\xxxxx\xxxxx

但是,我收到了错误

'警告:[14:34:02][Export-DbaRepServerSetting] 无法加载复制库 | 无法加载文件或“Microsoft.SqlServer.Replication.dll”或其依赖项之一。指定的模块无法找到。'

它成功导出了除实例复制之外的所有其他内容。我可以成功使用-Exclude 'ReplicationSettings'Export-DBAInstance工作。我还可以在安装了任何其他 SQL 版本的 Windows 2016 服务器上成功执行原始脚本。

服务器是 Windows 2016,SQL 是 2019 标准。dbatools smo 文件夹中的文件版本Microsoft.SqlServer.Replication.dll为 2017.140.1000.169,产品版本为 14.0.1000.169。中的版本C:\Program Files\Microsoft SQL Server\150\SDK\Assemblies分别为 2019.150.2000.5 和 15.0.2000.5。

我还尝试执行Invoke-Expression (Invoke-WebRequest -UseBasicParsing https://dbatools.io/in)以下载最新版本的 dbatools,解锁文件并导入 dbatools 模块。我还尝试将Microsoft.SqlServer.Replication.dllSQL 2016\2012 和 2017 实例复制到上面的 Assemblies 文件夹中。

4

2 回答 2

1

从 1.0.161 开始, Dbatools不再支持导致上述命令错误的复制功能。这些Microsoft.SqlServer.Rmo.dll命令所依赖的命令通常是通过 Sql Server Management Studio (SSMS) 17 安装的,并且隐含地假设大多数用户会从他们使用 SSMS 的同一个盒子中使用 Dbatools。SSMS 18 更改了对这些 dll 的要求,它们无法加载和使用。

有关更多详细信息,请参阅github 上的问题68976548 。

于 2021-06-27T01:27:36.030 回答
0

您可以尝试手动加载程序集,以检查实际错误:

PS> $dbaToolsPath = "xxxx"   # your full path to the dbaTools
PS> $Error.Clear()
PS> Add-Type -Path "$dbaToolsPath\bin\smo\Microsoft.SqlServer.Replication.dll" -ErrorAction Stop
PS> ($Error | Select-Object -Last 1).Exception.InnerException | Select-Object *

Microsoft.SqlServer.Rmo.dll并为大会重复此操作

于 2020-02-17T14:38:21.657 回答