Глобальные временные таблицы с 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 ответ

Решение

Да, это правильно, потому что глобальная временная таблица существует в соединении / сеансе, в котором она была создана, и автоматически удаляется при закрытии соединения. В вашем случае сначала SQLCMD создает таблицу

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

И соединение закрывается, что удаляет временную таблицу, и поэтому в следующем соединении она больше не существует

sqlcmd -S localhost -d tempdb -E -Q "drop table ##temp"
Другие вопросы по тегам