C#.NET e tabelle temporanee di SQL Server

mercoledì 24 febbraio 2010 - 17.51

Tirechan Profilo | Newbie

Ciao a tutti, premetto che sono nuovo della programmazione .NET, quindi è facile che dica delle cavolate, perdonatemi...
Sto facendo un applicazione in C#.net collegata ad un DB SQL Server. E' possibile utilizzare le tabelle temporanee di SQL (quelle che iniziano per # per capirci) o dal momento che apro e chiudo la connessione continuamente queste risultano inutilizzabili?

Grazie in anticipo

lbenaglia Profilo | Guru

>Sto facendo un applicazione in C#.net collegata ad un DB SQL
>Server. E' possibile utilizzare le tabelle temporanee di SQL
>(quelle che iniziano per # per capirci) o dal momento che apro
>e chiudo la connessione continuamente queste risultano inutilizzabili?

Ciao Davide,

Ti riporto una sezione dei Books Online:

Temporary tables are automatically dropped when they go out of scope, unless explicitly dropped by using DROP TABLE:

A local temporary table created in a stored procedure is dropped automatically when the stored procedure is finished. The table can be referenced by any nested stored procedures executed by the stored procedure that created the table. The table cannot be referenced by the process that called the stored procedure that created the table.

All other local temporary tables are dropped automatically at the end of the current session.

Global temporary tables are automatically dropped when the session that created the table ends and all other tasks have stopped referencing them. The association between a task and a table is maintained only for the life of a single Transact-SQL statement. This means that a global temporary table is dropped at the completion of the last Transact-SQL statement that was actively referencing the table when the creating session ended.

Capisci bene che se lato client apri e chiudi la connessione prima e dopo ogni comando SQL (cosa buona e giusta) non potrai fare uso delle tabelle temporanee in quanto alla chiusura della connessione verranno automaticamente droppate.
Il discorso cambia invece se incapsuli parte della logica di business in stored procedure all'interno delle quali puoi raggruppare più operazioni logiche differenti con le quali puoi condividere i dati memorizzati nelle tabelle temporanee.

>Grazie in anticipo
Prego.

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

Tirechan Profilo | Newbie

Ciao Lorenzo,
grazie mille per la risposta... Purtroppo immaginavo che fosse proprio questa perchè conosco abbastanza bene SQL, però speravo magari che ci fosse qualche stratagemma da utilizzare in .NET per sfruttare questa funzionalità, oppure per mantenere aperta la stessa connessione durante tutto il ciclo, ma leggendo qua e là, e come mi hai confermato tu, le connessioni è bene tenerle aperte il meno possibile...
A questo punto quindi mi conviene utilizzare una tabella fisica del DB per memorizzare temporaneamente i dati che andrò poi a gestire in blocco giusto? (praticamente devo memorizzare una serie di barcode che vado a leggere con un lettore ottico e poi prendere queste righe e creare un documento)

Ciao
Davide

lbenaglia Profilo | Guru

>A questo punto quindi mi conviene utilizzare una tabella fisica
>del DB per memorizzare temporaneamente i dati che andrò poi a
>gestire in blocco giusto?
Boh, giusto

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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