【问题标题】:DBATools Error: 'could not load file or assembly 'Microsoft.SqlServer.Replication.dll or one of its dependencies''DBATools 错误:'无法加载文件或程序集'Microsoft.SqlServer.Replication.dll 或其依赖项之一''
【发布时间】:2020-05-17 09:00:24
【问题描述】:

我正在运行下面的 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.dll 从 SQL 2016\2012 和 2017 实例复制到上面的 Assemblies 文件夹中。

【问题讨论】:

    标签: sql-server powershell dbatools


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      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 程序集重复此操作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        • 2012-01-14
        • 1970-01-01
        相关资源
        最近更新 更多