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

同环境下Invoke-Sqlcmd的TrustServerCertificate参数为何仅部分机器可用?

问题分析与解决

核心原因是两台机器的SqlServer模块版本不一致,具体细节如下:

  • 虽然你们都确认模块是SqlServer,但-TrustServerCertificate参数是在SqlServer模块的较新版本中才新增的(比如21.1.18102及以后的版本),旧版本的SqlServer模块并没有这个参数。这就导致相同命令在低版本模块环境下执行时,会提示参数不存在。

验证步骤

让另一位DBA执行以下命令确认模块版本:

Get-Module SqlServer -ListAvailable

或者直接查看Invoke-SqlCmd的参数列表:

(Get-Command Invoke-SqlCmd).Parameters | Select-Object Name

解决办法

  1. 升级SqlServer模块(推荐)
    以管理员身份运行PowerShell,执行升级命令:

    Update-Module SqlServer
    

    注意:如果之前没配置过PSGallery可信源,可能需要先执行Set-PSRepository -Name PSGallery -InstallationPolicy Trusted。

  2. 兼容旧版本的写法
    如果无法升级模块,可以改用连接字符串的方式指定证书信任,示例代码:

    $DSQLServer = 'VM-SQL119'
    $connString = "Server=$DSQLServer;Database=master;Integrated Security=True;TrustServerCertificate=True"
    $Results = Invoke-SqlCmd -ConnectionString $connString -Query "SELECT @@ServerName"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:42:41