我正在运行下面的Powershell
Export-DbaInstance -SqlInstance xxxxxxxxxxxx -ExcludePassword -Exclude databases -Path \xxxxxxxxxx
但是,我收到错误
'警告: [14:34:02][导出-DbaRepServer设置] 无法加载复制库 |无法加载文件或"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 FilesMicrosoft SQL Server150SDKAssemblies
中的版本分别为 2019.150.2000.5 和 15.0.2000.5。
我还尝试执行Invoke-Expression (Invoke-WebRequest -UseBasicParsing https://dbatools.io/in)
下载最新版本的 dbatools,解锁文件并导入 dbatools 模块。 我还尝试将Microsoft.SqlServer.Replication.dll
从 SQL 2016\2012 和 2017 实例复制到上面的程序集文件夹中。
自 1.0.161 起,Dbatools 不再支持导致上述命令中错误的复制函数。命令所依赖的Microsoft.SqlServer.Rmo.dll
通常通过 Sql Server Management Studio (SSMS( 17 安装,并且隐式假设大多数用户将使用 SSMS 的同一框中的 Dbatools。SSMS 18 更改了这些 dll 的要求,无法加载和使用它们。
有关更多详细信息,请参阅 github 上的问题 6897 和 6548。
您可以尝试手动加载程序集,以检查实际错误:
PS> $dbaToolsPath = "xxxx" # your full path to the dbaTools
PS> $Error.Clear()
PS> Add-Type -Path "$dbaToolsPathbinsmoMicrosoft.SqlServer.Replication.dll" -ErrorAction Stop
PS> ($Error | Select-Object -Last 1).Exception.InnerException | Select-Object *
并对Microsoft.SqlServer.Rmo.dll
程序集重复此操作