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

PowerShell的Invoke-Sqlcmd是否支持接受服务器证书?新服务器证书信任配置

Invoke-Sqlcmd证书信任配置及连接超时问题解决

已执行操作

  • 安装全新Windows Server 2022
  • 启用Set-ExecutionPolicy
  • 安装PowerShell SQL模块
  • 执行命令:
    Invoke-Sqlcmd -ServerInstance "SERVER\SQL" -query "USE databsename SELECT GETDATE();" -Username "username" -Password "strongpassword"
    

报错信息

Invoke-Sqlcmd : 连接超时已过期。尝试接收预登录握手确认时超出了超时时间。这可能是因为预登录握手失败,或者服务器无法及时响应。尝试连接到此服务器所花费的时间为 - [预登录] 初始化=8; 握手=14993;

说明:该命令在本地机器及其他服务器上可正常运行,需解决以下两个问题:

  1. PowerShell的Invoke-Sqlcmd是否有接受服务器证书的选项?
  2. 如何在新安装的Windows Server上配置证书信任?

1. Invoke-Sqlcmd接受服务器证书的选项

Invoke-Sqlcmd提供了直接处理证书信任的参数,常用方式有两种:

  • 使用-TrustServerCertificate参数:该参数会跳过证书链验证,直接信任SQL Server的证书,适合测试或内部可信环境。修改后的命令如下:
    Invoke-Sqlcmd -ServerInstance "SERVER\SQL" -query "USE databsename SELECT GETDATE();" -Username "username" -Password "strongpassword" -TrustServerCertificate
    
  • 通过连接字符串指定:如果使用-ConnectionString参数传递连接信息,可以在字符串中加入TrustServerCertificate=True:
    $connString = "Server=SERVER\SQL;Database=databsename;User ID=username;Password=strongpassword;TrustServerCertificate=True"
    Invoke-Sqlcmd -ConnectionString $connString -Query "SELECT GETDATE();"
    

2. 新Windows Server 2022上配置永久证书信任

若需要长期信任SQL Server证书(而非临时跳过验证),可按以下步骤操作:

  1. 导出SQL Server证书
    • 在SQL Server所在服务器打开MMC控制台,添加「证书」管理单元,选择「计算机账户」,导航至证书(本地计算机) > 个人 > 证书
    • 找到SQL Server使用的证书(主题通常包含服务器名或实例名),右键选择「所有任务 > 导出」,导出为.cer格式(无需导出私钥)
  2. 导入证书到受信任根目录
    • 在目标Windows Server上打开MMC控制台,同样添加「证书」管理单元并选择「计算机账户」,导航至证书(本地计算机) > 受信任的根证书颁发机构 > 证书
    • 右键选择「所有任务 > 导入」,按照向导完成.cer证书的导入
  3. 验证配置
    重新执行原始Invoke-Sqlcmd命令,无需添加-TrustServerCertificate参数即可正常连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:25:55