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

MacOS下无法通过Azure Data Studio登录Azure SQL Database求助

解决MacOS Ventura 13.5.2下Azure Data Studio连接Azure SQL Database的SocketException(22)错误

问题背景

使用MacOS Ventura 13.5.2,已配置Azure SQL Database的服务器级和客户端IP防火墙规则,确认服务器名称、SQL认证信息正确,但通过Azure Data Studio连接时抛出以下错误:

System.Net.Sockets.SocketException (22): Invalid argument
    at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName)
    at System.Net.Sockets.Socket.UpdateStatusAfterSocketOptionErrorAndThrowException(SocketError error, String callerName)
    at Microsoft.Data.SqlClient.SNI.SNITCPHandle.Receive(SNIPacket& packet, Int32 timeoutInMilliseconds)
    at Microsoft.Data.SqlClient.SNI.TdsParserStateObjectManaged.ReadSyncOverAsync(Int32 timeoutRemaining, UInt32& error)
    at Microsoft.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()
    at Microsoft.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()
    at Microsoft.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(SqlConnectionEncryptOption encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean& marsCapable, Boolean& fedAuthRequired, Boolean tlsFirst, String serverCert)
    at Microsoft.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnectionString connectionOptions, Boolean withFailover)
    at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
    at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
    at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
    at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool)
    at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
    at Microsoft.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
    at Microsoft.Data.ProviderBase.DbConnectionFactory.<>c__DisplayClass48_0.<CreateConnection>b__0(Task`1 _)
    at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
    at Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection.ReliableSqlConnection.<>c__DisplayClass30_0.<OpenAsync>b__0()
    in //src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/ReliableSqlConnection.cs:line 313
--- End of stack trace from previous location ---
    at Microsoft.SqlTools.ServiceLayer.Connection.ConnectionService.TryOpenConnection(ConnectionInfo connectionInfo, ConnectParams connectionParams) in //src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs:line 711

解决方案

以下是针对该错误的有效排查和解决步骤,按优先级尝试:

  • 强制使用IPv4连接
    该错误常因MacOS IPv6兼容性问题导致,可强制客户端使用IPv4:

    1. 在Azure Data Studio的连接对话框中,点击高级选项
    2. 在附加连接参数中添加:MultiSubnetFailover=False;IPAddressPreference=IPv4
    3. 保存配置后重试连接
  • 禁用系统IPv6

    1. 打开系统设置 -> 网络
    2. 选中当前使用的网络(Wi-Fi/以太网),点击高级
    3. 切换到TCP/IP标签,将配置IPv6设置为关闭
    4. 重启Azure Data Studio后尝试连接
  • 更新Azure Data Studio到最新版本
    旧版本的Microsoft.Data.SqlClient驱动可能存在MacOS特定bug,升级到最新版可修复:

    1. 打开Azure Data Studio -> 帮助 -> 检查更新
    2. 安装可用更新后重启软件重试
  • 重置网络接口
    执行终端命令重置当前网络接口(以Wi-Fi为例,接口名为en0,以太网可能为en1):

    sudo ifconfig en0 down && sudo ifconfig en0 up
    

    执行后重启电脑再尝试连接

  • 排查代理/VPN干扰
    关闭当前运行的VPN、代理软件,部分代理会篡改网络数据包导致参数错误;若必须使用代理,需确保代理正确转发1433端口的TCP流量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:34:57