我想在 SQL Server 代理作业中创建一个全局临时表。
这是代码:
CREATE TABLE ##TestEmployee(Id int, EmployeeName nvarchar(50))
当我在 SSMS 中执行时,一切都很好。
然后,我将上述代码放在 SQL 代理作业上。该作业将成功完成,但是当我尝试在 SSMS 中执行 select 语句时,Invalid Object
出现错误。
SELECT * FROM ##TestEmployee
通过在 SQL Server 代理中创建全局临时表,我是否遗漏了任何问题?
全局临时表和本地临时表之间的区别不在于它们存在多长时间,而在于谁能看到它们。
本地临时表只能由创建它们的会话 (spid) 看到。每个人都可以看到全局临时表,但只有在创建它们的会话处于活动状态时才能看到。
如果您在 SQL 代理作业中运行它,它一旦完成就会消失。这就是您无法访问它的原因,因为它不再存在。
在使用这些对象时,了解全局临时表的可见性是必不可少的,尤其是在从不同会话中使用全局临时表时。
https://www.mssqltips.com/sqlservertip/4031/sql-server-global-temporary-table-visibility/