Sql 联接大型表-由于活动事务,事务日志已满
我有两张大桌子,分别有6000万张。1000万张唱片。我想将这两个表连接在一起,但是进程运行了3个小时,然后返回错误消息: 由于“活动\u事务”,数据库的事务日志已满Sql 联接大型表-由于活动事务,事务日志已满,sql,tsql,Sql,Tsql,我有两张大桌子,分别有6000万张。1000万张唱片。我想将这两个表连接在一起,但是进程运行了3个小时,然后返回错误消息: 由于“活动\u事务”,数据库的事务日志已满 自动增长是无限的,我已经将DB恢复设置为simple 日志驱动器的大小为50 GB 我使用的是SQLServer2008R2 我使用的SQL查询是: Select * into betdaq.[dbo].temp3 from (Select XXXXX, XXXXX, XXXXX, XXXXX, XXXXX f
- 自动增长是无限的,我已经将DB恢复设置为simple
- 日志驱动器的大小为50 GB
SQLServer2008R2
我使用的SQL
查询是:
Select * into betdaq.[dbo].temp3 from
(Select XXXXX, XXXXX, XXXXX, XXXXX, XXXXX
from XXX.[dbo].temp1 inner join XXX.[dbo].temp2
on temp1.Date = temp2.[Date] and temp1.cloth = temp2.Cloth nd temp1.Time = temp1.Time) a
即使数据库处于简单恢复模式,事务日志也可能已满,即使“选择到”是一个日志记录最少的操作,由于其他事务同时运行,日志也可能已满 在查询运行时,我将使用下面的查询检查事务对tlog空间的使用情况
select * from sys.dm_db_log_space_usage
select * from sys.dm_tran_database_transactions
select * from sys.dm_tran_active_transactions
select * from sys.dm_tran_current_transaction
下面的查询还可用于检查sql文本
单个命令是一个事务,该事务直到结束才提交。
因此,您正在填写事务日志 您需要一次循环并插入100000行 从这里开始,只需测试前100000个
然后需要添加带有光标的循环
create table betdaq.[dbo].temp3 ...
insert into betdaq.[dbo].temp3 (a,b,c,d,e)
Select top 100000 with ties XXXXX, XXXXX, XXXXX, XXXXX, XXXXX
from XXX.[dbo].temp1
join XXX.[dbo].temp2
on temp1.Date = temp2.[Date]
and temp1.Time = temp1.Time
and temp1.cloth = temp2.Cloth
order by temp1.Date, temp1.Time
为什么?这是大量的数据。您可以使用视图或CTE吗?如果这些连接列被索引,视图将非常高效 您是否计算过“计数x返回行的大小”?