销售电话: 1-800-867-1380

Azure SQL Database 资源限制

更新时间: 2014年6月

Azure SQL Database 会对共享资源(事务日志、I/O 等)的使用进行监视,这样便可将数据库限定在既定的资源边界之内。此资源边界或阈值称为资源限制,当客户端使用的资源超过这些限制时,Azure SQL Database 将在租户或在物理节点级别,通过管理资源使用率来进行响应,而这会导致连接断开或请求被拒绝。

下表摘要列出了每种资源的限制,当超过这些限制时,Azure SQL Database 会拒绝对受影响资源的请求或终止与受影响资源的连接,然后返回一个错误代码。

Important重要提示
有时,会为一种资源的多个限制条件返回相同的错误代码。这些条件在错误消息中标识为“状态”。例如,对于“事务日志长度”资源,会显示以下错误消息,每个错误消息有相同的错误代码/消息,但是根据限制条件的不同具有不同的“状态”值。

Msg 40552, Level 17, State 1, Line 1
The session has been terminated because of excessive transaction log space usage.
Try modifying fewer rows in a single transaction.

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

Msg 40552, Level 17, State 2, Line 1
The session has been terminated because of excessive transaction log space usage.
Try modifying fewer rows in a single transaction.

下表和之后的说明包含了此类错误代码中每种状态的限制和说明。单击表中的资源名即可跳转到本主题后面相应的说明。

 

资源 限制 返回的错误代码

数据库大小

150 GB 或更少,取决于数据库配额 (MAXSIZE)

40544

事务持续时间

状态 1:24 小时

状态 2:20 秒,如果事务锁定基础系统任务所需的资源

40549

事务锁计数

每个事务 100 万个锁

40550

Tempdb

状态 1:5 GB tempdb 空间

状态 2:tempdb 中每个事务 2 GB 空间

状态 3:tempdb 中总日志空间的 20%

40551

事务日志长度

状态 1:每个事务 2 GB

状态 2:总日志空间的 20%

40552

内存用量

16 MB 内存授予超过 20 秒钟

40553

 

拒绝请求/连接丢失机制 返回的错误代码 限制 被拒请求的类型 建议

当分配给用户数据库的数据库空间已满时,用户会收到数据库已满的错误。

40544: 数据库已达到最大大小。请将数据分区或删除、删除索引或查阅文档以找到可能的解决方案。

150 GB 或更少,取决于数据库配额 (MAXSIZE)

非选择 DML(插入或更新信息的 Insert、Update、Merge)。

使用 DELETE/DROP 语句从数据库中删除数据,直到数据库大小在限制之内为止。

返回页首

 

拒绝请求/连接丢失机制 返回的错误代码 限制 被拒请求的类型 建议

事务会请求对事务依赖的资源(如行、页或表)进行锁定,而当交易不再依赖锁定的资源时,便会释放锁定。你的请求可能由于以下两种情况中的任意一种而遭到拒绝:

  • 状态 1:如果事务运行时间超过 24 小时,则将它终止。

  • 状态 2:如果事务锁定基础系统任务所需的资源超过 20 秒,则将它终止。

40549: 由于你有长时间运行的事务,已终止会话。请尝试缩短事务运行时间。

状态 1:24 小时

状态 2:20 秒,如果事务锁定基础系统任务所需的资源

任何运行超过 24 小时的事务或任何采用锁的 DDL 或 DML 语句(导致阻止系统任务)。

对 SQL Database 执行的操作不应阻止用户输入或有会产生长期运行事务的其他依赖项。

返回页首

 

拒绝请求/连接丢失机制 返回的错误代码 限制 被拒请求的类型 建议

使用的锁数超过 100 万的会话将被终止。

40550: 由于会话获取的锁过多,已终止该会话。请尝试在单个事务中读取或修改更少的行。

每个事务 100 万个锁

任何 DDL 或 DML 语句。

以下 DMV 可用于监视事务:

  • sys.dm_tran_active_transactions

  • sys.dm_tran_database_transactions

  • sys.dm_tran_locks

  • sys.dm_tran_session_transactions

根据应用程序的类型,有可能使用较粗粒度的锁提示,如 PAGLOCK 或 TABLOCK,来减少给定语句/事务中采用的锁数。请注意,这可能对应用程序并发性能产生负面影响。

返回页首

 

拒绝请求/连接丢失机制 返回的错误代码 限制 被拒请求的类型 建议

你对 tempdb 的请求可能由于以下三种情况中的任意一种而遭到拒绝:

  • 状态 1:如果会话使用超过 5 GB 的 tempdb 空间,则终止会话。

  • 状态 2:如果 tempdb 中事务的日志大小超过 2 GB,则截断事务。可能占用 tempdb 中日志空间的操作示例:插入、更新、删除、合并和创建索引。

  • 状态 3:tempdb 中未提交的事务可能会阻止日志文件的截断。为防止这种情况发生,tempdb 中从最旧的活动事务日志序列号 (LSN) 到日志末尾(当前 LSN)的距离,不能超过日志文件大小的 20%。如果违反这一规定,tempdb 中违反这一规定的事务将被终止并回滚,以便可以截断日志。

40551: 会话已由于过多的 tempdb 使用而终止。请尝试修改你的查询以减少使用临时表空间。

状态 1:5 GB tempdb 空间

状态 2:tempdb 中每个事务 2 GB 空间

状态 3:tempdb 中总日志空间的 20%

tempdb 上的任何 DDL 或 DML 语句。

修改查询以降低临时表空间用量,在不再需要临时对象后将它们删除,截断表或删除未使用的表。

减少 tempdb 中事务的数据大小,可减少行数或将操作分拆为多个事务。

返回页首

 

拒绝请求/连接丢失机制 返回的错误代码 限制 被拒请求的类型 建议

你的请求可能由于以下两种情况中的任意一种而遭到拒绝:

  • 状态 1:SQL Database 支持最多生成 2 GB 日志的事务。日志大小超过此限制的事务会被截断。可能占用此卷中日志空间的操作示例:插入、更新、删除、合并和创建索引。

  • 状态 2:未提交的事务可能会阻止日志文件的截断。为防止这种情况发生,从最旧的活动事务日志序列号 (LSN) 到日志末尾(当前 LSN)的距离,不能超过日志文件大小的 20%。如果违反这一规定,违反这一规定的事务将被截断并回滚,以便可以截断日志。

40552: 由于过度使用事务日志空间,已终止该会话。请尝试在单个事务中修改更少的行。

状态 1:每个事务 2 GB

状态 2:总日志空间的 20%

任何 DDL 或 DML 语句。

对于行操作,减少事务中数据的大小,例如,减少行数或将操作分拆为多个事务。

对于需要单个事务的表/索引操作,请确保遵循以下公式:表中受影响的行数 * (所更新字段的平均字节大小 + 80) < 2 GB(在重建索引时,所更新字段的平均大小应当替换为平均索引大小)。

返回页首

 

拒绝请求/连接丢失机制 返回的错误代码 限制 被拒请求的类型 建议

如果有会话等待内存授予超过 20 秒或更长时间,则将按照持有资源时间长度的降序来终止耗用超过 16 MB 内存授予超过 20 秒的会话,从而使最早的会话最先终止。会话终止会在所需内存可用时立即停止。

40553: 由于过度使用内存,已终止该会话。请尝试修改你的查询以处理更少的行。

使用超过 16 MB 内存授予超过 20 秒。

使用内存授予的查询,包括使用排序和哈希联接的查询。

对需要排序和/或哈希联接的查询执行查询优化。

返回页首

另请参阅

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft