【问题标题】:Unable to load DLL 'sni.dll' or one of its dependencies: The specified module could not be found无法加载 DLL 'sni.dll' 或其依赖项之一:找不到指定的模块
【发布时间】:2021-07-15 10:48:46
【问题描述】:

我在自托管代理上运行 UI 测试,尝试恢复数据库时收到以下错误消息:

[ERROR] The type initializer for 'System.Data.SqlClient.TdsParser' threw an exception. -> The type initializer for 'System.Data.SqlClient.SNILoadHandle' threw an exception. -> Unable to load DLL 'sni.dll' or one of its dependencies: The specified module could not be found. (Exception from HRESULT: 0x8007007E)

这些是我的依赖

    <PackageReference Include="Appium.WebDriver" Version="4.3.1" />
    <PackageReference Include="Microsoft.Data.SqlClient" Version="3.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
    <PackageReference Include="Microsoft.VisualStudio.TestPlatform" Version="14.0.0" />
    <PackageReference Include="SpecFlow.Plus.LivingDocPlugin" Version="3.9.5" />
    <PackageReference Include="SpecRun.SpecFlow" Version="3.9.7" />
    <PackageReference Include="FluentAssertions" Version="5.10.3" />
    <PackageReference Include="System.Data.SqlClient" Version="4.8.2" />

我的 buildpipline 工作正常,看起来像这样:

当在代理机器上运行 dotnet --info 时,我得到以下输出

.NET SDK (reflecting any global.json):
 Version:   5.0.301
 Commit:    ef17233f86

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\5.0.301\

Host (useful for support):
  Version: 5.0.7
  Commit:  556582d964

.NET SDKs installed:
  5.0.301 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.All 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET runtimes or SDKs:
  https://aka.ms/dotnet-download

这是我运行测试的发布管道

【问题讨论】:

    标签: c# .net azure-devops


    【解决方案1】:

    将 Microsoft.Data.SqlClient.Sni.xx.dll 复制到 bin 文件夹

    【讨论】:

    • 重命名为 sni.dll
    【解决方案2】:

    如果您使用的是 Azure Piplines,我建议您使用 powershell 任务来恢复您的数据库。我是这样做的:

    首先使用以下命令在您的代理机器上安装 SQL Server 模块:

    Install-Module -Name SqlServer

    向你的管道添加一个 Powershell 任务并选择内联,然后你可以像这样运行你的 SQL 语句:

    $sql = @"
    USE [master]
    ALTER DATABASE[TEST_DATABASE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    RESTORE DATABASE[TEST_DATABASE] FROM DISK = 'D:\Public\TEST_DATABASE.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5
    ALTER DATABASE[TEST_DATABASE] SET MULTI_USER
    "@
    
    Invoke-Sqlcmd -Query $sql -ServerInstance "SERV\TESTING" –Username "dev" –Password "12345678"
    

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 2014-12-04
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多