在 SQL 代理作业中创建全局临时表

Mik*_*son 1 sql-server sql-server-agent temporary-tables

我想在 SQL Server 代理作业中创建一个全局临时表。

这是代码:

CREATE TABLE ##TestEmployee(Id int, EmployeeName nvarchar(50))
Run Code Online (Sandbox Code Playgroud)

当我在 SSMS 中执行时,一切都很好。

然后我将上面的代码放在 SQL 代理作业上。作业将成功完成,但是当我尝试在 SSMS 中执行 select 语句时,出现Invalid Object错误。

SELECT * FROM ##TestEmployee
Run Code Online (Sandbox Code Playgroud)

在 SQL Server 代理中创建全局临时表是否有我遗漏的任何问题?

Kri*_*yer 5

全局和本地临时表之间的区别不在于它们存在多长时间,而在于谁能看到它们。

本地临时表只能由创建它们的会话 (spid) 看到。每个人都可以看到全局临时表,但只有在创建它们的会话处于活动状态时才能看到。

如果您在 SQL 代理作业中运行它,一旦它完成,它就会消失。这就是您无法访问它的原因,因为它不再存在。

  • 我看到了我的方法的错误。我错误地认为全局 ##temp 表将在创建它的会话的生命周期之外存在。 (2认同)