Check esistenza tabella temporanea

martedì 21 febbraio 2012 - 14.16
Tag Elenco Tags  SQL Server 2008 R2  |  SQL Server 2008  |  SQL Server 2005  |  SQL Server 2000  |  SQL Server Express

gsflash80 Profilo | Junior Member

Buon pomeriggio a tutti, non riesco a capire sul check:

IF NOT EXISTS (SELECT * FROM dbo.sysobjects
WHERE id = OBJECT_ID(N'[DOCSADM].[#DPA_VIS_ANOMALA]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
CREATE TABLE [DOCSADM].#DPA_VIS_ANOMALA
( ID_GRUPPO INTEGER )
END
ELSE
PRINT '#DPA_VIS_ANOMALA già esistente'
GO


quando ho messo nel quary con UN SOLO blocco, funziona bene.
invece nel file dove ci sono molto blocchi, mi restituisce l'errore:
Msg 2714, Level 16, State 6, Line 5
There is already an object named '#DPA_VIS_ANOMALA' in the database.

Ne avreste idea di che cosa si tratta? ne ho cercato in google, non mi quadra...
Grazie
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

lbenaglia Profilo | Guru

>quando ho messo nel quary con UN SOLO blocco, funziona bene.

Ciao,

Cosa intendi con "blocco"? Intendi batch?
Puoi postare un esempio che genera l'errore?

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

gsflash80 Profilo | Junior Member

scusami che rispondo ora, ho già risolto semplicemente mettendo il nuovo query e funziona.

il blocco significa ad esempio:

create procedure ......
begin...
end...
end procedure
GO

create function....
end....
GO

quindi sono due blocchi, si chiama così o sbaglio? magari potrei cambiare il termine secondo il vostro consiglio :-)

Poi un altra cosa che mi è venuto in mente, non so se è possibile:

Sto cercando di fare il CD in unico versione, perchè prima facevo diversi CD per diversi clienti, e proprio ieri nella riunione abbiamo parlato di fare in un unico CD, mi è venuto in mente di mettere gli scripts con le condizioni del certificato o codice di ogni cliente.
faccio un esempio:

IF cod_key = '4392039423948'
alter table.....
end if

IF cod_key = '4800298289'
create function.......
end if

PERO' vorrei capire se sarebbe possibile di mettere in FTP online così i clienti con il proprio codice o certificato, ricevono la notifica che si devono aggiornare, ma sempre secondo il codice del cliente.
Che cosa pensi? Sto provando il possibile e sto girando in rete, così magari questa idea sarebbe utile per i clienti.

Credo che servirebbe:
accedere regedit da sql server/oracle
notificare ai clienti che ce da aggiornare, sempre secondo il numero di codice cliente che rilasciamo, finora abbiamo sempre portato con CD, ma io proverei a mettere la possibilità di mettere il rilascio online e far notificare ai clienti sull'upgrade/update.
Grazie ancora :D Sarebbe difficile ma bisogna sempre tentare :-)

poi ho provato in questo modo per leggere regedit:

declare @Check_Codice nvarchar(100)
exec docspaFEB.sys.xp_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Nomecartella\nomecartella1', N'last_update', @Check_Codice OUTPUT
select @Check_Codice

e mi restituisce l'errore:
xp_regread() returned error 5, 'Access is denied.'
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

lbenaglia Profilo | Guru

>il blocco significa ad esempio:
>
>create procedure ......
>begin...
>end...
>end procedure
>GO
>
>create function....
>end....
>GO
>
>quindi sono due blocchi, si chiama così o sbaglio? magari potrei
>cambiare il termine secondo il vostro consiglio :-)
Sbagli, quello che tu chiami impropriamente "blocco" prende il nome di batch. Un batch è un gruppo di uno o più comandi T-SQL inviati contemporaneamente a SQL Server per essere eseguiti. Il comando GO identifica la fine di un batch.

>Che cosa pensi? Sto provando il possibile e sto girando in rete,
>così magari questa idea sarebbe utile per i clienti.
Non so di cosa stia parlando

>poi ho provato in questo modo per leggere regedit:
>
>declare @Check_Codice nvarchar(100)
>exec docspaFEB.sys.xp_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Nomecartella\nomecartella1',
>N'last_update', @Check_Codice OUTPUT
>select @Check_Codice
>
>e mi restituisce l'errore:
>xp_regread() returned error 5, 'Access is denied.'
>----
Lascia perdere quelle XP. Se devi leggere il registry fallo applicativamente lato client.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

gsflash80 Profilo | Junior Member

Da quel momento chiamerò batch :-) grazie

poi su quell'idea, non avresti capito esattamente che cosa vorrei fare? mi dica di che cosa non avresti capito.
Provo a chiarire:

Quello che facevo prima
CD versione 3.10 (per il cliente 1)
CD versione 3.12 (per cliente 2)
CD versione 3.14 (per cliente 3)

Quindi ora vorrei fare in un unico CD con la versione per tutti i clienti, faccio questo modo:

CD versione 3.15 (con le condizioni secondo il codice del cliente, dovrei trovare il modo per far leggere il codice nel regedit)

CD Versione 3.15 ------ if codice 43432432 (codice cliente 1) e segue gli scripts, se ci sono altre modifiche per altro cliente, sempre con IF codice 3112131231 segue gli scripts, così via... se il cliente 3 non ha nessun da aggiornare, non fa nulla.

Però questo ci proverei a mettere in online con il versione che rilascio, e poi arriva la notifica al cliente 1 e cliente 2, che devono scaricare per aggiornarsi 3.15, invece cliente 3 non riceve per niente la notifica perchè non ha nessun da aggiornare.
Mi sono spiegato meglio?

invece hai detto che lascia perdere xp read, lato client come sarebbe? magari mi daresti un indicazione.
Grazie ancora
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

gsflash80 Profilo | Junior Member

Buon pomeriggio, oggi ho ripreso quella cosa da fare sul regedit, nessun indicazione?
Poi un'altra cosa, vorrei sapere se è possibile di creare il package nel MSSQL perchè dovrei tradurre il package di oracle a MSSQL.
E' possibile?
Grazie
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5