我正在使用 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;
我能够运行其他查询,但是这个特定查询无法运行。有什么建议可以解决此问题将不胜感激。