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

使用Invoke-Sqlcmd在Synapse SQL池建表时遇连接/登录错误求助

解决Invoke-Sqlcmd连接Azure Synapse专用SQL池的问题

一、先修正命令拼写错误

你的命令里-SeverInstance是拼写错误,正确参数是-ServerInstance,这个低级错误会直接导致连接失败,先改过来。

二、正确指定ServerInstance值

不同端点的格式要求不一样,针对专用SQL池,你必须用对应的专用端点:

  • 专用SQL端点格式:<工作区名称>-sql.sql.azuresynapse.net,别直接用Synapse工作区资源名称,也不要混用无服务器端点。

三、解决专用端点的“无法登录用户名”问题

  • 确认用户名是专用SQL池的管理员账号,或者是在该专用池中授权过的数据库用户,Synapse工作区管理员不一定自动拥有专用池的登录权限。
  • 检查专用SQL池的防火墙规则:在Azure门户里开启“允许Azure服务和资源访问此服务器”(你在Azure门户的PowerShell CLI执行,这个规则必须开),如果后续用本地环境测试,还要添加对应IP。
  • 核对密码:专用SQL池的管理员密码是创建池时单独设置的,和Synapse工作区密码可能不一样,别搞混。

四、错误代码25、35的排查方案

  • 错误25:TCP连接失败,先在PowerShell里跑Test-NetConnection -ComputerName <你的专用端点> -Port 1433,确认网络能连通。
  • 错误35:SSL/TLS版本不兼容,Synapse要求TLS 1.2以上,执行命令前先设置:[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

五、修正后的完整命令示例

# 强制使用TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# 执行建表命令
Invoke-Sqlcmd -Query 'CREATE TABLE #DUMMYTABLE(USERNAME varchar(50));' `
-ServerInstance "your-workspace-sql.sql.azuresynapse.net" `
-Database "your-dedicated-sql-pool-name" `
-Username "your-dedicated-pool-admin" `
-Password "your-password" `
-QueryTimeout 36000 `
-Verbose

六、ADO流水线迁移提示

  • 优先用ADO的「Azure SQL Database」任务,它支持Synapse专用SQL池,能直接用服务连接管理凭据,不用硬编码密码。
  • 如果非要用PowerShell任务:用微软托管代理的话,确保专用池防火墙允许Azure服务访问;用自托管代理的话,要把代理IP加入防火墙白名单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:18:16