具有SQLCMD的全局临时表

时间:2015-07-14 17:49:25

标签: sql-server sqlcmd

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

CREATE TABLE ##temp (col1 INT)
GO

DROP TABLE ##temp
GO

使用SQLCMD,我在一次调用中创建一个全局临时表,而在第二次调用中它不存在。

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.

在服务器重置之前,全局临时表是不是应该留下来?

1 个答案:

答案 0 :(得分:3)

是的,正确的原因是全局临时表存在于创建它的连接/会话中,并在连接关闭时自动删除。在您的情况下,首先SQLCMD创建表

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

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

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