在任何地方找不到任何东西。
数据库使用不到其大小配额的1%。当我运行一个使用TempDB的长时间运行的查询时,我得到了这个例外。
答案 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方面的某个人可以更详细地解释一下 - 我们仍然很困惑。