gpt4 book ai didi

sql - 由于 'tempdb',数据库 'ACTIVE_TRANSACTION'的事务日志已满

转载 作者:行者123 更新时间:2023-12-04 12:52:47 25 4
gpt4 key购买 nike

我正在使用Microsoft SQL Server 2014,尝试创建临时表时遇到了一些问题。我之前已经运行过此代码一次,没有任何问题,但是当我今天尝试运行查询时,我收到了以下两个错误之一:“数据库中已经有一个名为'#AllClasses'的对象”或“数据库的事务日志”由于“ACTIVE_TRANSACTION”,“tempdb”已满。”我粘贴了下面的代码的一部分:

    CREATE TABLE #AllClasses(studentId uniqueidentifier, ClassName nvarchar(100), SchoolName nvarchar(100), AcademicYearId uniqueidentifier, UserGroupId uniqueidentifier, SchoolId uniqueidentifier, ClassId uniqueidentifier,  UserGroupOrganizationStatusId tinyint);

CREATE UNIQUE INDEX #I_AllClasses ON #AllClasses (StudentId, UserGroupId);

INSERT #AllClasses(studentId, ClassName, SchoolName, AcademicYearId, UserGroupId, SchoolId, sc.ClassId, u.UserGroupOrganizationStatusId)

SELECT sc.studentId, c.ClassName, u.UserGroupOrganizationName, c.AcademicYearId, c.UserGroupId, c.SchoolId, sc.ClassId, u.UserGroupOrganizationStatusId
FROM StudentClassCrossReference sc
INNER JOIN class c ON sc.ClassId = c.classId
INNER JOIN School s ON s.SchoolId = c.SchoolId
INNER JOIN dbo.UserGroupOrganization u ON u.UserGroupOrganizationId = s.UserGroupOrganizationId
GROUP BY sc.studentId, c.classname, u.UserGroupOrganizationName, u.UserGroupOrganizationId, c.AcademicYearId, c.UserGroupId, c.SchoolId, sc.ClassId, u.UserGroupOrganizationStatusId
HAVING u.UserGroupOrganizationStatusId = 0

当我尝试删除表时,出现一个新错误,提示“无法删除表'#All Classes',因为它不存在或您没有权限。”
        DROP Table #LS25Student, #AllClasses, #LS25PageSession, #LS25PsByClass

当我尝试使用IF语句删除表时,收到错误消息“由于'ACTIVE_TRANSACTION','tempdb'的事务日志已满”。
    IF OBJECT_ID('tempdb.dbo.#AllClasses', 'U') IS NOT NULL 
DROP TABLE #AllClasses;

IF OBJECT_ID('tempdb.dbo.#LS25Student', 'U') IS NOT NULL
DROP TABLE #LS25Student;

IF OBJECT_ID('tempdb.dbo.#LS25PageSession', 'U') IS NOT NULL
DROP TABLE #LS25PageSession;

IF OBJECT_ID('tempdb.dbo.#LS25PsByClass', 'U') IS NOT NULL
DROP TABLE #LS25PsByClass;

我能够运行其他查询而不会出现问题。任何解决此特定查询的建议将不胜感激。

最佳答案

您可以使用简单的SELECT * FROM tempdb..sysobjects WHERE name LIKE '%AllClasses%'搜索所有临时对象
要修复它,只需运行一次:

BEGIN TRANSACTION
DROP TABLE #AllClasses
COMMIT TRANSACTION

如果仍然无法删除它,只需使用 SELECT * FROM sys.dm_exec_sessions检查僵尸 session 并使用 KILL session_id杀死它。

关于sql - 由于 'tempdb',数据库 'ACTIVE_TRANSACTION'的事务日志已满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45290016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com