PDA

View Full Version : SQL: messaggio d'errore poco chiaro...


Mirkuz
03-05-2002, 14:56
Facendo girare una DLL che esegue delle query SQL ad un certo punto mi dà il seguente messaggio d'errore:
"OLE DB provider 'SQLOLEDB' reported an error. The provider ran out of memory".

Questo accade in corrispondenza dell'esecuzione di una query che in pratica importa in una tabella temporanea, che risiede in un DB di un server che chiamerò A, i dati contenuti in un'altra tabella di un DB che sta su un server diverso (B). La stringa di connessione a cui faccio fare l'execute punta ad A.
La stringa che faccio eseguire è:
"SET DATEFORMAT MDY SELECT * INTO ##tmpTab1 FROM ServerB.DataBaseB.DBO.tab2"

Come posso evitare questo errore di memoria, che tra l'altro mi risulta incomprensibile?
Grazie,

Mirkuz
06-05-2002, 11:43
Se qualcuno può essermi d'aiuto, la domanda è sempre valida...:)

Mirkuz
07-05-2002, 11:27
Proprio nessuno mi sa dare una mano? Che tristezza! Il mio regno per un aiutino!!! Sigh!

Tassadar
07-05-2002, 11:35
Originariamente inviato da Mirkuz
[B]Facendo girare una DLL che esegue delle query SQL ad un certo punto mi dà il seguente messaggio d'errore:
"OLE DB provider 'SQLOLEDB' reported an error. The provider ran out of memory".

Questo accade in corrispondenza dell'esecuzione di una query che in pratica importa in una tabella temporanea, che risiede in un DB di un server che chiamerò A, i dati contenuti in un'altra tabella di un DB che sta su un server diverso (B). La stringa di connessione a cui faccio fare l'execute punta ad A.
La stringa che faccio eseguire è:
"SET DATEFORMAT MDY SELECT * INTO ##tmpTab1 FROM ServerB.DataBaseB.DBO.tab2"

Come posso evitare questo errore di memoria, che tra l'altro mi risulta incomprensibile?
Grazie,

Bèh il messaggio che hai fa riferimento ad out of memory, quindi immagino che la tabella è troppo grossa per essere gestita come fai tu....... prova ad aggirare il problema :)

Mirkuz
07-05-2002, 15:38
Premesso che la tabella non posso ridurla...La mia domanda è: è possibile aumentare la quantità di memoria a disposizione del provider per le singole operazioni?
Grazie comunque per avermi risposto, almeno tu!!!...:)

Tassadar
07-05-2002, 15:47
Originariamente inviato da Mirkuz
[B]Premesso che la tabella non posso ridurla...La mia domanda è: è possibile aumentare la quantità di memoria a disposizione del provider per le singole operazioni?
Grazie comunque per avermi risposto, almeno tu!!!...:)

Non lo so, però potresti verificare se la tabella è così grossa da riempire fisicamente tutta la memoria disponibile della macchina, visto che è temporanea suppongo venga salvata in RAM....

Scusa, ma dalla dll non puoi accedere a DB via DSN ODBC?

cionci
08-05-2002, 00:28
Se ci accedi tramite un DSN prova ad aumentare MaxBufferSize fra le proprietà avanzate del DSN di sistema...

Tassadar
08-05-2002, 09:19
Originariamente inviato da cionci
[B]Se ci accedi tramite un DSN prova ad aumentare MaxBufferSize fra le proprietà avanzate del DSN di sistema...

Up the IRONS :D

Mirkuz
08-05-2002, 11:03
...se rispondo solo ora.
Innanzitutto grazie per i consigli. L'unico problema, Cionci, è che non sono sicuro che venga utilizzato il DSN.
Io ti spiego la situazione, così magari me lo sai dire tu...:)
Ci sono tre servers coinvolti: uno su cui gira l'applicazione web e la relativa DLL. Uno (che chiamerò SQL1) su cui gira il SQL Server e su cui faccio girare anche tutte le Stored Procedures. Infine l'ultimo (SQL2), con SQL Server su cui importo i dati da un foglio Excel ad una tabella.
Il giro è questo: l'applicazione web preleva il foglio, la DLL apre una connessione sia con SQL1 che con SQL2.
Su SQL2 importa i dati del foglio excel. Tramite la connessione su SQL1 migro i dati dalla tabella su SQL2 a una analoga su SQL1.
Premetto che SQL2 è un linked server per SQL1.
L'applicazione si pianta sulla migrazione da tabella a tabella.

La stringa SQL eseguita è:

'SET DATEFORMAT MDY SELECT * INTO ##tmp FROM SQL2.DBNAME.DBO.tmp'

La stringa di connessione utilizza come provider 'SQLOLEDB'

Il messaggio di errore che mi compare è:

"The provider reported an error. The 'SQLOLEDB' provider ran out of memory"

Non so proprio che fare...:(

Grazie,