在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.
在服务器重置之前,全局临时表是不是应该留下来?
答案 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"