【问题标题】:Can't access RDS SqlServer after tier upgrade层级升级后无法访问 RDS Sql Server
【发布时间】:2020-11-13 08:20:48
【问题描述】:

我昨天将我的 SQL Server RDS 实例从 db.t2.medium 升级到了 db.t3.xlarge。从那以后,我无法使用 SQL Server Management Studio、Azure Data Studio 或编程访问从本地计算机连接到它。

我的应用程序托管在同一网络下的 EC2、Windows Server 中,仍然能够很好地连接到数据库。无需触摸任何东西,连接字符串是一样的。

数据库:

  • SQL Server Express
  • 引擎版本:14.00.3281.6.v1
  • 多可用区:否
  • IAM 身份验证:已禁用
  • 参数组:default.sqlserver-ex-14.0
  • 可公开访问:是
  • 接受来自任何协议的入站 (0.0.0.0/0)

我尝试使用管理员登录名进行连接,我什至重置了管理员密码以确保安全。也试过了:

  • 重新启动我的电脑
  • 等待 24 小时以防 SSMS 需要时间来更新其句柄
  • 忘记登录(我已将其保存在 SSMS 中)并重新登录

基本上,除了等级升级,什么都没有改变,只是我不能登录了。

完整的错误信息是:

Cannot connect to XXX.YYY.us-east-1.rds.amazonaws.com,1433.

ADDITIONAL INFORMATION:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - The wait operation timed out.) (Microsoft SQL Server, Error: 258)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=258&LinkId=20476

------------------------------

Error Number: 258
Severity: 20
State: 0

------------------------------
Program Location:

   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server)
   at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()

在 SSMS 登录对话框中,选项加密连接和信任服务器证书处于打开状态。

我搜索了谷歌,论坛,在 SO 中看到了this question,但无法弄清楚。

有什么建议吗?提前致谢!

【问题讨论】:

  • 我猜,您的实例上的公共 IP 是否已更改?它总是 DNS :)
  • 嗨皮特,我无法确认,因为我不知道更改前的 IP 是什么。但是一位从未登录过该数据库的同事继续尝试,他成功了。就像它与我链接的 SO 问题中提到的“句柄”有关,但如果是这样,我该如何清除我的 SSMS 句柄?重新启动并没有削减它。
  • 我认为“MySQL”解决方案不适用于 SQL Server。您和您的同事是否在同一个网络(互联网 - 公共 IP)上?但是,您确实打开了 0.0.0.0/0。
  • 不,我们相距大约 3 英里...但是,0.0.0.0/0 无论如何都是开放的
  • 检查服务器上的 Windows 防火墙?这些是我与 SQL Server 远程连接的典型问题:nettrax.net/2014/09/12/…

标签: sql-server database-connection ssms amazon-rds


【解决方案1】:

我认为 ssms 没有服务器句柄的缓存。我相信这与您的 dns 缓存有关。 我可以请您运行以下命令。我可以据此细化答案。

  1. nslookup XXX.YYY.us-east-1.rds.amazonaws.com
  2. ping XXX.YYY.us-east-1.rds.amazonaws.com
  3. telnet XXX.YYY.us-east-1.rds.amazonaws.com 1433
  4. sqlcmd -U<login> -S<server>:1433 -P<password>

从 1 或 2 获取公网 IP,尝试使用 ipaddress:1433 在 ssms 中连接

3 将判断端口是否被本地防火墙/安全组阻止

4是另一种尝试

【讨论】:

  • 嗨,nslookup 和 ping 产生了一个 IP。然后我用服务器名和IP尝试了telnet和sqlcmd,都没有成功。 Telnet“无法打开与主机的连接”,sqlcmd“登录超时”。还尝试更新我的 IP 并刷新 DNS 缓存。
猜你喜欢
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 2017-11-13
  • 1970-01-01
  • 2021-09-17
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多