MSSQL veritabanında temp (geçici) tablolar tempdb ismindeki veritabanında tutulur. Bu yüzden kullandığınız veritabanın information schema tablosunda görülemeyecektir.
1 2 |
select CATALOG_NAME into ##temp from [tempdb].[INFORMATION_SCHEMA].[SCHEMATA]; SELECT * FROM INFORMATION_SCHEMA.TABLES where table_name like '%##temp%' |
ilk satır ##temp tablonuzu açar , ikinci satırda ise tablonuzu kendi veritabanınızda aradığınız için bulamazsınız.
Çözüm :
1 2 3 4 5 6 7 8 9 |
SELECT OBJECT_ID('tempdb..##temp') IF OBJECT_ID('tempdb..##temp') Is NOT NULL begin drop table ##temp end |
Yukarıdaki gibi object_Id fonksiyonu ile tempdb içinde arama yapmalısınız.
Not : tempdb..##temp yazımında TEK NOKTA ile çalışmadığına dikkat ediniz. Çift nokta olmasının sebebi DBO yazmak yerine nokta koysanız kabul ediyor.
tempdb.dbo.##temp yazımıda kabul ediliyor.