You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中使用Microsoft.Data.SqlClient?现有方案失效求助

解决PowerShell中加载Microsoft.Data.SqlClient的依赖问题

针对你遇到的程序集版本不匹配问题,以下是分PowerShell环境的可行解决方案:

方案一:PowerShell 7+(基于.NET Core/.NET 5+)

PowerShell 7+原生支持现代.NET版本,直接下载对应兼容版的NuGet包即可:

  1. 确认当前PowerShell版本:

    $PSVersionTable.PSVersion
    

    确保主版本号≥7。

  2. 安装NuGet包提供程序(若未安装):

    Install-PackageProvider -Name NuGet -Force
    
  3. 下载兼容的Microsoft.Data.SqlClient包:
    选择与当前PS对应.NET版本匹配的包版本(例如PS7.3对应.NET 7,可选用5.1.1版本):

    $tempDir = Join-Path $env:TEMP "SqlClient"
    Install-Package -Name Microsoft.Data.SqlClient -OutputDirectory $tempDir -RequiredVersion 5.1.1
    
  4. 加载程序集:

    $dllPath = Join-Path $tempDir "Microsoft.Data.SqlClient.5.1.1\lib\net7.0\Microsoft.Data.SqlClient.dll"
    Add-Type -Path $dllPath
    
  5. 测试使用:

    $conn = New-Object Microsoft.Data.SqlClient.SqlConnection "Server=.;Database=YourDB;Integrated Security=True"
    $conn.Open()
    # 执行后续数据库操作
    $conn.Close()
    

方案二:PowerShell 5.1(基于.NET Framework)

PS5.1依赖.NET Framework,需下载针对.NET Framework的SqlClient版本:

  1. 确认PS版本:

    $PSVersionTable.PSVersion
    

    主版本号为5。

  2. 安装NuGet包提供程序:

    Install-PackageProvider -Name NuGet -Force
    
  3. 下载.NET Framework兼容版包(例如4.1.0版本,支持.NET Framework 4.6.2+,适配PS5.1默认的.NET Framework 4.8):

    $tempDir = Join-Path $env:TEMP "SqlClientNetFx"
    Install-Package -Name Microsoft.Data.SqlClient -OutputDirectory $tempDir -RequiredVersion 4.1.0
    
  4. 加载程序集:

    $dllPath = Join-Path $tempDir "Microsoft.Data.SqlClient.4.1.0\lib\net462\Microsoft.Data.SqlClient.dll"
    Add-Type -Path $dllPath
    
  5. 测试使用:

    $conn = New-Object Microsoft.Data.SqlClient.SqlConnection "Server=.;Database=YourDB;Integrated Security=True"
    $conn.Open()
    # 执行后续数据库操作
    $conn.Close()
    

方案三:使用官方SqlServer模块(无需手动加载DLL)

微软官方的SqlServer模块已集成Microsoft.Data.SqlClient,无需手动处理依赖:

  1. 安装模块:

    Install-Module -Name SqlServer -Force -AllowClobber
    
  2. 直接使用SqlClient对象或模块命令:

    # 直接创建SqlConnection对象
    $conn = New-Object Microsoft.Data.SqlClient.SqlConnection "Server=.;Database=YourDB;Integrated Security=True"
    # 或使用模块自带命令,如Invoke-SqlCmd
    Invoke-SqlCmd -ServerInstance . -Database YourDB -Query "SELECT * FROM YourTable"
    

关键注意事项

  • 版本匹配:必须选择与当前PowerShell底层.NET版本兼容的Microsoft.Data.SqlClient版本,否则会出现依赖缺失。
  • SNI文件:若遇到连接错误,可将下载包中对应平台的Microsoft.Data.SqlClient.SNI.x64.dll(或x86)复制到脚本目录或系统PATH路径中。
  • 依赖加载:若仍出现依赖错误,可将下载包中依赖的其他DLL(如System.Runtime)一并通过Add-Type -Path加载。

内容的提问来源于stack exchange,提问作者Odrai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:31:04