Tbella con nome variabile a seconda della data

lunedì 10 agosto 2009 - 12.25

perla0279 Profilo | Senior Member

ciao
con sql 2000 dovrei creare una tabella con nome variabile a seconda della data.

Per fare un esempio io avevo provato così:
declare @pippo as nvarchar (50)
set @pippo = 'Moduli' + convert (nvarchar (50),getdate() ,112)
print @pippo

CREATE TABLE @pippo(.................

Ma giustamente non funziona.
Come posso fare per creare una tabella con nome + data odierna ??

lbenaglia Profilo | Guru

>Come posso fare per creare una tabella con nome + data odierna??

Ciao Elena,

Personalmente non ritengo corretto generare "al volo" tabelle in quanto questa necessità denota un errore in fase di progettazione della base dati.
Ad ogni modo il tuo problema può essere facilmente risolto ricorrendo al (pericoloso) Dynamic SQL, quindi componendo la stringa col comando SQL ed eseguendolo via EXEC o sp_executesql.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

perla0279 Profilo | Senior Member

Perchè pericolosissimo ???

l'esigenza nasce da un back_up di alcune tabelle che vengono generate in modo dinamico.... in modo da avere una controprova delle attività utente.
Nel senso che ogni tot viene lanciato una procedura che esegue delle operazioni, questa perde la traccia di tutto quello che c'era precedentemente. L'idea era quella di salvare le tabelle su un database di back_up con Nome+data.....

L'altra ipotesi e di inserire una data e poi effettuare le ricerche per data..... ma l'altro metodo rendeva più semplice l'estrazione e la join dei dati in caso di necessita.

lbenaglia Profilo | Guru

>Perchè pericolosissimo ???
Perché esponi la tua base dati ad attacchi di SQL Injection:
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx

>l'esigenza nasce da un back_up di alcune tabelle che vengono
>generate in modo dinamico.... in modo da avere una controprova
>delle attività utente.
E l'errore è proprio questa "esigenza". Progettando opportunamente la base dati eviterai di dover generare dinamicamente nuove tabelle.

>Nel senso che ogni tot viene lanciato una procedura che esegue
>delle operazioni, questa perde la traccia di tutto quello che
>c'era precedentemente. L'idea era quella di salvare le tabelle
>su un database di back_up con Nome+data.....
Eseguire un backup di un db specificando nome e data ha un senso, generare nuovi oggetti dinamicamente no.

>L'altra ipotesi e di inserire una data e poi effettuare le ricerche
>per data.....
Qui ti stai muovendo nella direzione giusta.

>ma l'altro metodo rendeva più semplice l'estrazione
>e la join dei dati in caso di necessita.
??

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

perla0279 Profilo | Senior Member

Bhe ........... non ho molta esperienza. quindi ascolto il consiglio.

Nella mia testa avere una tabella diversa per ogni elaborazione mi sembrava più semplice da gestire :-) :-)

Comunque adesso penso creerò una tabella con data di elaborazione in modo da avere un back_up unico

grazie del consiglio


Avrei un'altra domandina ........... :-)
Visto la scelta del metodo vorrei a questo punto inserire anche il nome utente che effettua l'operazione.
Come faccio a metterlo di default sul campo di una tabella..... mi piacerebbe sempre se possibile che venisse settato come getdate() che in automatico ti inserisce il valore per ogni record...
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5