2012-11-05 10 views
6

Ciao Sto creando una tabella Temp e inserendo i dati nella tabella. Sto andando a usare la tabella Temp per unirla allo specifico utente.Impossibile rilasciare la tabella temporanea SQL

CREATE TABLE #MyTempTable 
(
    UsersId int, 
    ValautionCount int 
) 

    SELECT 
     U.UserId, 
     COUNT(*) AS ValautionCount 
    INTO #MyTempTable 
    FROM 
     Users U 
     Right JOIN Valuation V ON V.ValuationUser = U.UserId 
    GROUP BY 
     U.UserId 



DROP TABLE #MyTempTable 

Quando eseguo questa query ottengo questo errore: C'è già un oggetto denominato '#Temp' nel database.

Ma quando eseguo questa query DROP TABLE #MyTempTable viene visualizzato questo errore: Impossibile eliminare la tabella '#Temp', perché non esiste o non si dispone dell'autorizzazione. Sto usando SQL 2012

+0

Duplicato domanda - http://stackoverflow.com/questions/2642111/drop-table-fails-for-temp-table – Sandeep

+0

@Sandeep la risposta suggerisce che il tempTable è stato creato in modo errato –

risposta

5

L'istruzione SELECT ... INTO ... crea la tabella #Temp. Non ha bisogno dell'istruzione CREATE TABLE qui. Rimuovi la frase "CREATE TABLE" e prova.

2

Hai già un'entità per nome "Temp" nel tuo database. E non sei in grado di abbandonare quell'entità a causa delle autorizzazioni di accesso.

+0

Ho ancora ricevuto l'errore anche se I cambia la tabella temporanea in #MyTempTable. Aggiornato nel post –

+0

Rimuovi riga Tabella drop #Temp ed excute funzionerà –

2

Non è necessario rilasciare la tabella temporanea poiché è visibile solo fino alla sessione.

Create PROCEDURE proctemptable 
BEGIN 

IF object_id('tempdb..#Temp') is not null // Try this hope this will work 
BEGIN 
    DROP TABLE #Temp 
END 

CREATE TABLE #Temp 
(
    UsersId int, 
    ValautionCount int 
) 

SELECT 
    U.UserId, 
    COUNT(*) AS ValautionCount 
INTO #Temp 
FROM 
    Users U 
    Right JOIN Valuation V ON V.ValuationUser = U.UserId 
GROUP BY 
    U.UserId 

//DROP TABLE #Temp 

END 

Non c'è bisogno di eliminare la tabella #Temp, lascerà cadere automaticamente quando l'esecuzione di stored procedure completata

O

prega di fare riferimento questo link per ulteriori tabelle temporanee in SQL Server

http://www.simple-talk.com/sql/t-sql-programming/temporary-tables-in-sql-server/

0

È possibile che la stessa tabella venga creata due volte nel codice.

ho sperimentato lo stesso problema, avevo copiato una sezione di codice ho voluto riutilizzare (modificato) nello stesso procedimento, tra cui una dichiarazione CREATE TABLE - mi è stato efficacemente la creazione della tabella due volte - e anche se i CREATE TABLE dichiarazioni erano tra distinti marcatori BEGIN e END e c'era un'istruzione DROP TABLE che rilasciava la prima istanza prima della seconda istruzione CREATE, ho riscontrato questo errore esatto.

+0

La risposta accettata spiega esattamente il motivo dell'errore. La tua risposta non aggiunge nulla di utile ad essa. – trincot

Problemi correlati