使用 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"
在 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"