Microsoft Azure SQL 数据库的连接问题的疑难解答

SQL Azure 数据库的连接失败时,您收到错误消息。连接问题可以引起 SQL Azure 数据库重构、 防火墙设置、 连接超时或不正确的登录信息。此外,如果达到了一些 SQL Azure 数据库资源的最大限制,您无法连接到 SQL Azure 数据库。

本指南是做什么的?

  • 错误代码或错误消息,当您连接到Microsoft Azure SQL 数据库得到解析。
  • 提供防止请求否认或连接端子,当您连接到 SQL Azure 数据库的最佳做法。

它是谁?

有问题连接到Microsoft Azure SQL 数据库的用户。

它是如何工作的?

我们会首先问你你面对错误。然后我们会带您通过一系列步骤特定于您的具体情况。

预计的完成时间 ︰

15-30 分钟。

欢迎来到疑难解答

选择您在您连接到的 SQL Azure 数据库或选择最后一个选项以转到下一页,选择你所获得的确切的错误消息时遇到的问题。

欢迎来到疑难解答

选择您在您连接到的 SQL Azure 数据库或选择最后一个选项以转到下一页,选择你所获得的确切的错误消息时遇到的问题。

无法连接到<servername>防火墙问题</servername>
你收到了什么错误消息?

附加信息 ︰

无法打开登录所请求的服务器 'servername'。客户端的 IP 地址 ip 地址不是允许访问该服务器。 若要允许访问,请使用 Windows Azure 管理门户或对掌握数据库运行 sp_set_firewall_rule,以便创建针对此 IP 地址或地址范围的防火墙规则。 它可能需要长达五分钟使此更改生效。(微软 SQL 服务器、 错误 ︰ 40615)

有关帮助,请单击 ︰ http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=40615&LinkId=20476

建立与 SQL Server 的连接与网络有关的或特定于实例的错误时发生。未找到或无法访问服务器。验证的实例名称是正确和 SQL 服务器被配置为允许远程连接。(提供程序 ︰ TCP 提供程序,错误 ︰ 0-访问被拒绝.)(微软 SQL 服务器、 错误 ︰ 5)

有关帮助,请单击 ︰ http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=5&LinkId=20476

访问被拒绝

选择你所遇到的详细的错误信息
解决"40615 错误 ︰ 无法连接到<servername>"错误</servername>

要解决此问题,配置防火墙设置 SQL 数据库使用 Azure 门户上

这解决你的问题吗?

服务器找不到或者不是可访问 (错误 26,40,10053)

你收到了什么错误消息?

System.Data.SqlClient.SqlException: 与网络有关的或特定于实例的错误建立与 SQL Server 的连接时发生。未找到或无法访问服务器。验证的实例名称是正确和 SQL 服务器被配置为允许远程连接。(提供程序 ︰ SQL 网络接口,错误 ︰ 26 — — 错误定位的服务器/实例指定)

建立与 SQL Server 的连接与网络有关的或特定于实例的错误时发生。未找到或无法访问服务器。验证的实例名称是正确和 SQL 服务器被配置为允许远程连接。(提供程序 ︰ 命名管道提供程序,错误 ︰ 40-无法打开 SQL 服务器的连接)

10053 ︰ 从服务器接收结果时出现了一个传输级错误。(提供程序 ︰ TCP 提供程序,错误 ︰ 0-建立的连接被中止您的主机中的软件)

解决“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误”问题

因为应用程序不能连接到服务器,就会出现问题。

要解决此问题,请尝试以下步骤 (按此顺序) ︰

  1. 请确保 TCP IP 启用作为应用程序服务器上的客户端协议。有关如何执行此操作的详细信息,请参阅配置客户端协议。在应用程序服务器没有安装的 SQL Server 工具,您可以检查这通过运行 cliconfg.exe (SQL Server 客户端网络实用工具)。
  2. 检查应用程序的连接字符串,以确保配置正确。例如,请确保该连接字符串指定正确的端口 (1433) 和完全限定的服务器名称。
    请参阅获取连接字符串从蔚蓝的门户
  3. 请尝试增加连接超时。Microsoft 建议使用至少 30 秒连接超时。

  4. 通过使用 UDL 文件、 坪和 telnet 测试应用程序服务器和 SQL Azure 数据库之间的连接。有关如何执行此操作的详细信息,请参阅疑难解答 SQL Server 连接问题诊断连接问题
    注意作为故障诊断的步骤,你也可以尝试测试在不同的客户端计算机上的连接。

  5. 作为一种最佳做法确保重试逻辑是到位。重试逻辑有关的详细信息,请参阅疑难解答瞬时性故障和连接到 SQL 数据库的错误

如果前面的步骤不能解决你的问题,请尝试以下步骤来收集更多数据,并与支持部门联系 ︰

这解决你的问题吗?
解决问题

Note  一些系统特定的问题,如停机或一些组件故障会出现这些错误消息。因此,您最终可能要来开启支持案例。

若要查找有关这些错误的详细信息,请尝试以下方法 ︰

  1. 检查微软 Azure 服务仪表板对于任何已知的中断。
  2. 通过使用 ping 和 telnet 测试连接性。有关如何执行此操作的详细信息,请参阅SQL 服务器的连接问题故障排除诊断连接问题

    注意作为一个故障排除步骤,试着测试在不同的客户端计算机上的连接。检查是否你可以通过使用 SQL 服务器管理工作室和还蔚蓝门户登录 ︰

  3. 如果您可以登录,您可以查询下列 Dmv master 数据库中的了解 (如重构、 空闲连接阈值等等) 失败的原因。

        选择 * 从 sys.resource_stats        在哪里 database_name = <数据库名称>        选择 * 从 sys.event_log        在哪里 database_name = <数据库名称>      

如果您无法登录,请单击"无法登录到服务器"和"连接失败从 SQL 服务器管理工作室 (SSMS)"下面的场景。

无法登录到服务器 (错误 18456,40531)

你收到了什么错误消息?

登录失败,用户 '< 用户名 >'。此会话已被分配 < 跟踪 ID > 跟踪 ID。当你需要帮助时提供给客户支持此跟踪 ID。(微软 SQL 服务器,错误 ︰ 18456)

无法确定服务器名称。它必须显示为服务器的 dns 名称 (servername.database.windows.net) 的第一个部分。某些库不发送服务器名称、 在这种情况下服务器名称必须作为用户名 (username@servername) 的一部分包含。此外,如果使用这两种格式,则服务器名称必须匹配。(微软 SQL 服务器、 错误 ︰ 40531)

解决“无法确定服务器名称”问题

若要解决此问题,请确保该用户的名称指定为 username@servername。例如,如果用户名称是user1和完全限定的服务器名称是abc123.database.windows.net,你应指定用户名称为user1@abc123


这解决你的问题吗?

解决“用户登录失败”问题

要解决此问题,请联系您的服务管理员为您提供有效的 SQL 用户名称和密码。更多的信息,请参阅管理数据库和 SQL Azure 数据库中的登录名

通常情况下,服务管理员可以使用以下步骤添加登录 ︰

  1. 登录到使用 SQL 服务器管理工作室 (SSMS) 的服务器。
  2. 请检查是否使用以下 SQL 查询禁用的登录名 ︰
    选择名称,is_disabled FROM sys.sql_logins
  3. 如果禁用了相应的名称,使它通过使用以下语句 ︰
    更改登录 < 用户名 > 启用
  4. 如果 SQL 登录用户名不存在,则通过使用 SSMS 来创建它。要做到这一点,请按照下列步骤操作 ︰
    1. 双击安全,将其展开。
    2. 登录,右键单击,然后选择新的登录名
    3. 在生成脚本中带有占位符,您可以编辑和运行以下 SQL 查询 ︰
      创建登录 < SQL_login_name,sysname,login_name >
      用密码 = '< 密码,sysname,Change_Password >'
  5. 双击数据库
  6. 选择要授予用户的权限的数据库。
  7. 双击安全
  8. 用户,用鼠标右键单击,然后选择新用户
  9. 在生成脚本中带有占位符,您可以编辑和运行以下 SQL 查询 ︰
    创建用户 < 全称,sysname,全称 >         登录 < sysname、 login_name、 login_name > 与 DEFAULT_SCHEMA = < default_schema,sysname,dbo > 去

    — — 将用户添加到数据库所有者角色
    EXEC sp_addrolemember N 'db_owner' N '< 全称,sysname,全称 >' 去
  10. 请注意,您还可以使用sp_addrolemember将特定用户映射到特定的数据库角色。


这解决你的问题吗?

与 SQL Server Management Studio (SSMS) 连接失败

你收到了什么错误消息?

解决“Microsoft SQL Server Management Studio Express 版本”问题

出现此问题是由于早期版本的 SQL 服务器管理工作室 (SSMS) 不受支持。

要解决此问题,请下载并安装以下的受支持版本的 SSMS 之一 ︰

︰ 您还可以使用 SQL 服务器 2008 R2 SSMS。有关详细信息,请检查此链接


这解决你的问题吗?

解决"无法打开的数据库"掌握"的要求登录。"问题

因为该帐户不具有对 master 数据库的访问权限,就会出现此问题。然而,默认情况下,SQL 服务器管理工作室 (SSMS) 试图连接到主数据库。

要解决此问题,请执行以下步骤 ︰

  1. 在登录屏幕上的 SSMS,单击选项,然后单击连接属性
  2. 连接到数据库中,作为默认登录数据库,键入用户的默认数据库名称,然后单击连接
    3844_image10
     
这解决你的问题吗?
解决“建立连接时,客户端可能已超时”问题

要解决此问题,请增加连接超时。连接超时值应该设置为至少 30 秒。

 

  这解决你的问题吗?

因达到某些系统定义的限制而连接中断

你收到了什么错误消息?

10928 ︰ 资源 ID: %d。为数据库 %s 限制就是 %d,已达到。请参阅http://go.microsoft.com/fwlink/?LinkId=267637求助。错误消息中的资源 ID 值指示已达到资源限制。会话,资源 ID = 2。

10929 ︰ 资源 ID: 1.将 %s 的最低保障是 %d、 最大限度是 %d 和数据库的当前使用情况是 %d。但是,服务器目前太忙了,为此数据库支持大于 %d 的请求。请参阅http://go.microsoft.com/fwlink/?LinkId=267637求助。否则,请稍后再试。

40501: 服务是当前正忙。请在 10 秒钟后重试请求。事件 ID: %ls。代码: %d。

40544 ︰ 数据库已达到其大小配额。请对数据进行分区或删除数据、删除索引或查阅文档寻找可能的解决方法。事件 ID: < ID >。代码 ︰ < 代码 >。

40549 ︰ 因为你有一个长时间运行的事务终止会话。请尝试缩短您的交易。

40551 ︰ 由于过度 TEMPDB 用法已终止会话。请尝试修改您的查询,以降低的临时表空间使用情况。

40552 ︰ 由于过高的交易日志空间使用率已终止会话。请尝试修改单个事务中的行数更少。

40553 ︰ 由于过多的内存使用率已终止会话。请尝试修改您的查询来处理较少的行。

解决“10928”达到限制问题

要变通解决此问题,请尝试以下方法 ︰

  • 验证是否有长时间运行的查询。要做到这一点,请按照下列步骤操作 ︰

    注意这是一种极简主义的方法,可能不一定能解决问题。

    1. 检查sys.dm_exec_requests视图以查看任何阻塞的请求。要执行此操作,请执行下面的 SQL 查询 ︰
      选择 * 从 dm_exec_requests
    2. 确定为头阻滞剂 inputbuffer。
    3. 您可以调整头阻滞剂查询。

      深入的故障排除步骤,请参阅 MSDN 上的以下职位 ︰
      是在云中运行好我查询?

  • 如果数据库始终达到其极限尽管解决阻塞和长时间运行的查询,请考虑升级到一个新的预览版本 (如标准或特优版本)
  • 有关动态管理视图的详细信息,请参阅动态管理视图和函数 (TRANSACT-SQL)
  • 有关此错误消息的详细信息,请参阅SQL Azure 数据库资源限制

这解决你的问题吗?

解决"10929"达到限制问题

有关此错误的详细信息,请参阅以下 MSDN 网页 ︰
SQL 数据库客户端程序的错误消息


这解决你的问题吗?

解决"40544 ︰ 数据库已达到其大小配额"问题

当数据库大小超过当前配置的最大大小,将发生此错误。

以下步骤可以帮助你要么通过工作解决问题或为您提供额外的选项,你可以考虑为

  1. 通过使用仪表板中蔚蓝管理门户检查数据库的当前大小。
    ︰ 要确定哪些表消耗最大的空间和清理的潜在候选人,你可以使用下面的 SQL 查询 ︰
    选择 o.name,a.SUM(p.row_count) 作为行计数,b.SUM(p.reserved_page_count) * 8.0 / 1024 作为 '表的大小 (MB)
    从 sys.object o
    加入 sys.dm_db_partition_stats p p.object_id = o.object_id
    GROUP BY o.name
    [表的大小 (MB)] 按顺序 DESC
  2. 如果当前的大小不超过你的支持的最大大小,可以使用ALTER DATABASE增加 MAXSIZE 设置。

  3. 如果数据库大小已经是过去的你版的最大支持大小,你可以采取以下步骤之一 ︰
    1. 执行正常的数据库清理活动 (通过使用截断删除等清理不需要的数据或将数据移使用 SSIS,bcp 等。)
    2. 考虑您的版本升级到支持更高的数据库大小的另一个版本。有关详细信息,请检查下面两个链接 ︰

      SQL Azure 数据库基本、 标准,和特优预览

      定价详细信息的 SQL 数据库

这解决你的问题吗?

解决"40552 ︰ 由于过高的交易日志空间使用率已终止会话"问题

若要解决此问题,请按照这些方法 ︰

  • 由于插入、 更新或删除操作出现问题。

    尽量减少的由执行批处理或拆分为多个较小的事务立即动手术的行数。

  • 由于索引重建操作出现问题。请确保您遵守以下公式 ︰

    受影响的表中的行数 * (在字节 + 80 中更新的字段的平均大小) < 2 GB

    注意为索引重建,应按平均指数大小取代更新的字段的平均大小。

这解决你的问题吗?
解决"40551: 会话已终止由于过度的 TEMPDB 使用。"问题

要变通解决此问题,请按照下列步骤操作 ︰

  1. 更改查询,以减少的临时表空间使用情况。
  2. 下降后,他们不再需要的临时对象。
  3. 截断表,或删除未使用的表。
这解决你的问题吗?
解决"40553: 会话已终止由于过多的内存使用情况。"问题

要变通解决此问题,请尝试优化查询。

深入的故障排除步骤,请参阅以下 MSDN 网页 ︰
是在云中运行好我查询?


这解决你的问题吗?

解决"40549 ︰ 会话终止因为你有一个长时间运行的事务。"问题

如果你反复遇到此错误消息,请尝试以下步骤来解决此问题 ︰

  1. 检查 sys.dm_exec_requests 视图以查看任何打开的会话,具有较高价值的 total_elapsed_time 列。要执行此操作,请执行下面的 SQL 脚本 ︰
    选择 * 从 dm_exec_requests
  2. 确定 inputbuffer 是长时间运行的查询。
  3. 您可以调整查询。

深入的故障排除步骤,请参阅以下 MSDN 网页 ︰
我的查询在云中运行好吗?


这是否解决了您的问题?

解决"40501: 服务是当前正忙."问题

这是发动机节流错误,有关节流错误的详细信息,请参阅SQL Azure 数据库资源限制和"SQL 数据库节流"节从Windows Azure SQL 数据库性能和弹性指南


这解决你的问题吗?

瞬态错误 (错误 40197,40545)

你收到了什么错误消息?

解决"40197: 服务遇到处理您的请求时出错"的问题

在后端重新配置/故障转移期间遇到瞬态错误会出现此问题。

要解决此问题,请等待短时间,然后重试。没有支持案例是必需的除非问题仍然持续。


这解决你的问题吗?

解决问题
  1. 检查微软 Azure 服务仪表板对于任何已知的中断。
  2. 如果不有任何已知中断去微软 Azure 支持网站,打开一个支持案例。

这解决你的问题吗?

连接超时错误

你收到了什么错误消息?

System.Data.SqlClient.SqlException (0x80131904): 连接超时已过期。在尝试使用预登录握手确认时超过了此超时时间。这可能是因为预登录握手失败或服务器未能及时响应。持续时间花时尝试连接到此服务器-[预登录] 初始化 = 3;握手 = 29995;

System.Data.SqlClient.SqlException (0x80131904): 超时已过期。操作完成之前超时时间已过或服务器未响应。

System.Data.Entity.Core.EntityException ︰ 基础提供程序未能打开。-> System.Data.SqlClient.SqlException ︰ 超时时间已到。操作完成之前超时时间已过或服务器未响应。-> System.ComponentModel.Win32Exception ︰ 等待操作超时

无法连接到 < 服务器名称 >。附加信息 ︰ 连接超时已过期。在登录后阶段超过了此超时时间。连接可能在等待服务器完成登录过程并响应时超时或者在尝试创建多个活动连接时超时。;持续时间花时尝试连接到此服务器-[预登录] 初始化 = 231;握手 = 983;[登录] 初始化 = 0;身份验证 = 0;[登录后] 完整 = 13000;(微软 SQL 服务器、 错误:-2)有关帮助,请单击 ︰ 等待操作超时的 http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=-2&LinkId=20476

解决连接超时问题

由于连接或查询问题,可能会发生异常 0x80131904。要确认此错误是由于连接问题,审查为帧显示打开连接,如下面的调用堆栈跟踪的 (注意SqlConnection类的引用) ︰

  System.Data.SqlClient.SqlConnection.TryOpen (TaskCompletionSource 1 重试)   ,System.Data.SqlClient.SqlConnection.Open()
在 AzureConnectionTest.Program.Main (字符串 [] args)
ClientConnectionId: < 客户端连接 ID >

当异常发生原因的查询问题时,你会发现类似于下面的调用堆栈 (对引用 Sqlcommand 类)。在这些情况下,你要在调优您的查询.

  在 System.Data.SqlClient.SqlCommand.ExecuteReader()
在 AzureConnectionTest.Program.Main (字符串 [] args)
ClientConnectionId: < 客户端 ID >

要解决这一问题,您可以尝试以下步骤 (按此顺序) ︰

  1. 检查应用程序的连接字符串,以确保配置正确。例如,请确保该连接字符串指定正确的端口 (1433) 和完全限定的服务器名称。

    请参阅获取连接字符串从蔚蓝的门户

  2. 请确保 TCP IP 启用作为应用程序服务器上的客户端协议。有关如何执行此操作的详细信息,请参阅配置客户端协议。在应用程序服务器没有安装的 SQL Server 工具,您可以检查这通过运行 cliconfg.exe (SQL Server 客户端网络实用工具)。
  3. 通过使用 UDL 文件、 坪和 telnet 测试应用程序服务器和 SQL Azure 数据库之间的连接。有关如何执行此操作的详细信息,请参阅疑难解答 SQL Server 连接问题诊断连接问题

  4. 请尝试增加连接超时。Microsoft 建议使用至少 30 秒连接超时。
  5. 作为一种最佳做法确保重试逻辑是到位。重试逻辑有关的详细信息,请参阅疑难解答瞬时性故障和连接到 SQL 数据库的错误

如果前面的步骤不能解决你的问题,请按照这些步骤操作收集更多的数据,并与支持部门联系 ︰

  1. 如果您的应用程序是一个云服务,启用日志记录。此步骤将返回故障的 UTC 时间戳。此外,SQL Azure 返回跟踪 id。Microsoft 客户支持服务可以使用此信息。
  2. 有关如何启用日志记录的详细信息,请参阅如何启用诊断日志记录的 Azure Web 站点开发 SQL 数据库应用程序SQL Azure 数据库开发注意事项一节。
  3. 查阅列表连接到 Windows Azure SQL 数据库的最佳做法
这解决你的问题吗?
成功

恭喜,您的 SQL Azure 数据库连接问题解决了。

有关如何避免 SQL Azure 数据库连接问题的更多信息,并请参阅以下 Web 页 ︰

疑难解答程序无法提供帮助

我们很抱歉你不能够连接到的 SQL Azure 数据库。

有关 SQL Azure 数据库连接问题进行故障排除的详细信息,并请参阅以下 Web 页 ︰

解决"错误 5 ︰ 无法连接到<servername>"错误</servername>

要解决此问题,请确保端口 1433年是打开出站连接的客户端和网络之间的所有防火墙。有关详细信息,请参阅配置Windows 防火墙允许 SQL 服务器访问额外的指针。

这解决你的问题吗?

解决"数据库<x>服务器上<y>当前不可"问题</y></x>

你获得的完整的错误消息是作为如下 ︰

40613 ︰ 数据库 < 数据库名称 > < 服务器名称 > 服务器上的当前不可用。请稍后重试连接。如果问题仍然存在,请联系客户支持,并提供他们 ' < 跟踪 ID >' 的会话跟踪 ID。

要解决此问题,请参阅疑难解答"服务器上的数据库是当前不可用"错误

这解决你的问题吗?

属性

文章 ID:10085 - 上次审阅时间:2016年5月27日 - 修订版本: 4

反馈