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

SSMS可连接但PowerShell无法连接SQL Server的配置咨询

解决PowerShell SMO无法连接SQL Server的配置要点
  • SMO组件版本兼容:运行脚本的机器需安装与目标SQL Server实例版本匹配的SMO组件。若目标是SQL Server 2019及以上版本,需安装对应版本的Microsoft SQL Server Management Objects包,避免因版本不匹配导致连接失败。
  • 启用SQL Server远程连接协议:
    • 打开目标服务器的SQL Server配置管理器,启用TCP/IP协议(默认可能处于禁用状态)。
    • 在TCP/IP属性中确认监听端口:默认实例为1433,命名实例若使用动态端口需确保端口开放,或配置为固定端口便于防火墙规则设置。
  • 配置防火墙规则:
    • 目标服务器Windows防火墙需允许SQL Server端口(1433或自定义端口)的入站连接;若为命名实例,还需允许UDP 1434端口(SQL Server Browser服务端口)的通信。
    • 运行脚本的客户端机器防火墙需允许出站连接到目标SQL Server的对应端口。
  • 权限验证:
    • 执行脚本的账号需具备目标SQL Server实例的公共角色权限,至少能读取服务器级系统视图(如sys.dm_os_version)。若使用Windows身份验证,确保账号在目标服务器有对应登录权限;若用SQL身份验证,需在脚本中显式传递凭据:
      $cred = Get-Credential
      $sql_svr = New-Object Microsoft.SqlServer.Management.Smo.Server($machine_name)
      $sql_svr.ConnectionContext.LoginSecure = $false
      $sql_svr.ConnectionContext.set_Login($cred.UserName)
      $sql_svr.ConnectionContext.set_SecurePassword($cred.Password)
      
  • 确保SQL Server Browser服务运行:
    • 针对命名实例,目标服务器的SQL Server Browser服务必须启动并设置为自动启动,否则客户端无法解析命名实例对应的端口。
  • 显式指定连接参数:
    • 避免仅依赖实例名传递,尝试通过连接字符串明确配置:
      $connString = "Server=$machine_name;Integrated Security=True;"
      $sql_svr = New-Object Microsoft.SqlServer.Management.Smo.Server($connString)
      
      这种方式能更精准控制身份验证与连接属性,排查默认配置的问题。
  • 检查PowerShell执行策略:
    • 执行Get-ExecutionPolicy查看当前策略,若为Restricted会阻止脚本运行,可设置为RemoteSigned(仅允许本地脚本和签名的远程脚本执行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:02:16