Errore timeout quando apro una vista

mercoledì 26 novembre 2008 - 10.59

gonzalezh Profilo | Junior Member

Ciao!!

Ho un problema con SQL Server 2005. Ho una vista che decodifica una tabella di solo ID con le respettive descrizioni che sono
localizzate in altre tabelle di anagrafica.
Le tabelle di anagrafiche sono piccole, massimo una ventina di record. E la tabella di solo ID ha 500 000 records.
Quando tento di aprire la vista mi viene restituito dopo 1 minuto circa un Timeout.
Invece se vado direttamente sulla vista seleziono la query ed eseguo me vengono normalmente restituiti tutti i dati dopo circa 2 minuti.

Come posso risolvere???

Grazie in anticipo,

H.

lbenaglia Profilo | Guru

>Le tabelle di anagrafiche sono piccole, massimo una ventina di
>record. E la tabella di solo ID ha 500 000 records.
>Quando tento di aprire la vista mi viene restituito dopo 1 minuto
>circa un Timeout.

Ciao Helen,

Quando tenti di aprire la vista con cosa?

>Invece se vado direttamente sulla vista seleziono la query ed
>eseguo me vengono normalmente restituiti tutti i dati dopo circa
>2 minuti.
Cosa intendi con "se vado direttamente sulla vista"?
Puoi essere più chiara?

>Grazie in anticipo,
Prego.

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

gonzalezh Profilo | Junior Member

con il SQL Server Managment estudio.

Se vado sulla vista, faccio click destro e dico Apri, mi da il Timeout dopo 2 minuti circa.

Se invece faccio Crea Script per vista ->Crea codice per istruzione create in -> Nuova finestra editor di query
e da li seleziono tutta la parte contenente il Select ... from ... escludendo solo la parte di
CREATE VIEW [Nome Vista] AS mi vengono restituiti i dati che mi aspetto.

spero di essere stata chiara.

Qual'è può essere il problema?

Grazie,

H.

lbenaglia Profilo | Guru

>Se vado sulla vista, faccio click destro e dico Apri, mi da il
>Timeout dopo 2 minuti circa.
Beh, 2 minuti di esecuzione mi sembrano un po' troppi...

>Se invece faccio Crea Script per vista ->Crea codice per istruzione
>create in -> Nuova finestra editor di query
>e da li seleziono tutta la parte contenente il Select ... from
>... escludendo solo la parte di
>CREATE VIEW [Nome Vista] AS mi vengono restituiti i dati che
>mi aspetto.
Capito.
Probabilmente SSMS imposta un timeout ragionevole dopo 2 minuti quando apri direttamente una vista.
Io ti suggerirei di capire per quale motivo impiega così tanto tempo.
Gli indici sono corretti?
Le statistiche sono aggiornate?
Quante righe restituisci?

>Grazie,
Prego.

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

gonzalezh Profilo | Junior Member

La vista restituisce 500 000 records e mette in join 30 tabelle. Una tabella di solo ID (Foreing key ) e 2 variabili con 500 000 records e altre 29 tabelle con ID (primary key) e descrizione, queste ultime di una ventina di records ciasquna.
Gli indici sono ben impostati.
Per le statistiche non è stato fatto nulla.
controllerò.

Grazie.

H.


lbenaglia Profilo | Guru

>La vista restituisce 500 000 records e mette in join 30 tabelle.

Scusa, qual è lo scopo di quel MOSTRO di vista?

>Grazie.
Prego.

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

gonzalezh Profilo | Junior Member

La tabella principale è una tabella con dati di output cioè delle variabili (2) e degli ID (30) che hanno la rispettiva descrizione in un'altra tabella di anagrafica. Lo scopo della vista è decodificare gli ID che sono FK nella tabella di output e mostrare agli analisti la tabella di output con le variabili e le descrizioni di tali ID che sono PK nelle tabelle di anagrafiche.

lbenaglia Profilo | Guru

>Lo scopo della vista è decodificare
>gli ID che sono FK nella tabella di output e mostrare agli analisti
>la tabella di output con le variabili e le descrizioni di tali
>ID che sono PK nelle tabelle di anagrafiche.

Perdonami, ma che se ne fanno gli analisti di 500.000 righe?
Presumo che applicheranno dei filtri (clausola WHERE) in modo da restituire un numero ragionevole di righe...

Ciao!

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

gonzalezh Profilo | Junior Member

Certo,
Quella tabella viene popolata via applicativo ed è il risultato di una elaborazione.Gli analisti filtrano la tabella, esportano il file in excel e si creano delle pivot table..

lbenaglia Profilo | Guru

>Certo,
>Quella tabella viene popolata via applicativo ed è il risultato
>di una elaborazione.Gli analisti filtrano la tabella, esportano
>il file in excel e si creano delle pivot table..
Bene, quindi l'unica cosa che posso aggiungere è che la restituzione di un numero così elevato di righe comporta del tempo
Se mi dici che gli indici sono a posto, non saprei che altro suggerirti.

Ciao!

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

gonzalezh Profilo | Junior Member

Ringrazio ad ogni modo.
Ciao.
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5