SQL Azure错误 - TEMPDB已达到其大小配额

时间:2016-09-13 19:10:25

标签: azure azure-sql-database

在任何地方找不到任何东西。

数据库使用不到其大小配额的1%。当我运行一个使用TempDB的长时间运行的查询时,我得到了这个例外。

2 个答案:

答案 0 :(得分:1)

SqlAzure根据你的等级设置了一些约束。我有一个基本的S0层,我做了以下测试,以了解我的层上每个会话的TEMPDB使用限制。

我有一个大约282 MB大小的订单表,我在循环中查询以下查询。下面是测试设置

while 1=1
begin
print @a 
print @size

insert into #orders
select * from orders

end

我在另一个会话中运行以下查询(大多数SQLserver查询也在Azure中运行)以了解TEmpDB的使用情况。

select * from sys.dm_db_session_space_usage

当我的会话达到974016页时,我收到配额错误,说明会话tempdb使用超出限制。每个页面大小为8 KB。因此,在我的层中,当单个会话使用几乎1 GB的空间时,我遇到错误。

答案 1 :(得分:1)

此异常具有误导性 - 但我们通过数字(18,0)字段将其跟踪到WHERE语句中的单个OR子句。

我们通过将语句(奇怪地)更改为相关子查询(您认为实际上会增加TempDB)来解决这个问题。

原始声明:

WHERE (x <> 0 OR y <> 0)

新声明:

WHERE x IN (SELECT id FROM Table Where x <> OR y <> 0)

希望Azure方面的某个人可以更详细地解释一下 - 我们仍然很困惑。