使用 SQLCMD 的全局临时表

Global temp tables with SQLCMD

在 SSMS 中,我可以在一批中创建一个全局临时变量,然后在另一批中使用它。像这样:

CREATE TABLE ##temp (col1 INT)
GO

DROP TABLE ##temp
GO

使用 SQLCMD,我在一次调用中创建了一个全局临时文件 table,但在第二次调用中它不存在。

sqlcmd -S localhost -d tempdb -E -Q "create table ##temp (col1 int)"

sqlcmd -S localhost -d tempdb -E -Q "drop table ##temp"
Msg 3701, Level 11, State 5, Server VATLLXT7LGBARE2, Line 1
Cannot drop the table '##temp', because it does not exist or you do not have permission.

全局临时 table 不应该在服务器重置之前一直存在吗?

是的,这是正确的,因为全局临时 table 存在于创建它的 connection/session 中,并在连接关闭时自动删除。在您的情况下,首先 SQLCMD 创建 table

sqlcmd -S localhost -d tempdb -E -Q "create table ##temp (col1 int)"

然后连接关闭,这会丢弃临时 table,因此在下一个连接中它不再存在

sqlcmd -S localhost -d tempdb -E -Q "drop table ##temp"