Как получить текущий идентификатор сеанса sproc и удалить временную таблицу, существующую в этом экземпляре sproc? - PullRequest
0 голосов
/ 14 октября 2011

Я использую sql2000 и хочу автоматически удалить таблицу #temp в экземпляре sproc или в окне запроса.Это больше для целей тестирования, чем для производства.Есть ли способ получить текущий сеанс или экземпляр sproc или даже экземпляр запроса и использовать его для удаления только таблиц #temp в этом экземпляре.Я не хочу удалять таблицы #temp в других случаях.

Я заметил, что другой вопрос переполнения стека использовал этот код :

declare @sql nvarchar(max) 
select @sql = isnull(@sql+';', '') + 
                                     'drop table ' + quotename(name) from tempdb..sysobjects 
where name like '#%' exec (@sql) 

Я просто хочу обнаружитьтолько таблицы #tmp в текущем сеансе или экземпляре.Мне также нужно будет сделать это в sql2008.спасибо

Спасибо.

Ответы [ 2 ]

5 голосов
/ 14 октября 2011

Ваш текущий SPID, опять же, это работает в 2005 году и выше, я не проверял его на экземпляре 2000 года

select @@SPID  

показывает, что вы делали в этом spid workins в 2005 году и не уверен насчет 2000версия

dbcc inputbuffer(54)   

Найти спиды и потоки ядра перед выполнением теста, сделать снимок экрана

   select spid, kpid, status, hostname, dbid, cmd
   from master..sysprocesses

Запустить SQL снова, как только вы начнете тестировать
ссылка на этот сайт http://support.microsoft.com/kb/117559

Чтобы удалить временную таблицу, если вы знаете имена, вы можете развернуть ее, чтобы получить желаемый результат

IF object_ID('tempdb..#MyTempTable') is not null
begin
    drop table #MyTempTable
end


create table #MyTempTable
(id int);

insert into #MyTempTable (id) values (1);

select * from #MyTempTable

select * from tempdb.sys.tables
where object_id = object_id('tempdb..#MyTempTable')

IF object_ID('tempdb..#MyTempTable') is not null
begin
    drop table #MyTempTable
end
0 голосов
/ 14 октября 2011

Просто убейте процесс с тем SPID, который вы подозреваете, и тогда все временные таблицы (локальные и глобальные) будут удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...