У меня есть хранимая процедура, которая использует временную таблицу с ##temp
, создавая «на лету», используя select * into ##temp from tablename
.Сохраненная процедура удаления временной таблицы
Проблема заключается в том, что эта хранимая процедура, по-видимому, удаляет или делает ее доступной только в тот момент времени, когда выполняется запрос, несмотря на то, что ##
является глобальным и может использоваться другими пользователями из того, что я знаю.
Я использую SSRS, чтобы вытащить хранимую процедуру и использовать сверление из этого отчета в тот же отчет, сначала на котором отображаются только графики, второй отчет, который является той же самой хранимой процедурой, которая использует ссылку действий через параметр, но вторая отчет не распознает таблицу ##temp
.
Теперь, когда у вас есть фон, есть ли способ обойти это или лучше сделать это, имейте в виду, что на данный момент у нас нет хранилища данных, поэтому просто используйте временные таблицы для работы ,
Благодаря
Если вы хотите сохранить стол, используйте реальную таблицу, не временную. Кроме того, ваш SP будет запускаться только один раз и сбой при последующих запусках из-за уже существующей таблицы. Используйте 'INSERT INTO ... SELECT ...' вместо' SELECT ... INTO ..'. –
Согласен с @ChrisPickford. Вот документы в [temp tables] (https://msdn.microsoft.com/en-us/library/ms174979.aspx). Существует раздел (примерно на полпути вниз, возглавляемый * Временные таблицы *), который детализирует, когда вы можете ожидать, что временная таблица покинет область действия и станет недоступной. –
Спасибо Крис, мой босс упомянул что-то о сервере SQL, принадлежащем клиенту, чтобы не создавать таблицу, но я полагаю, что представление будет работать так же хорошо, не так ли? без таких же последствий – abs786123