Domanda

Microsoft Access è un modo semplice per accedere ai dati in un database back-end di MS SQL Server, ma ho sempre avuto problemi ad accedere (per così dire) a grandi tabelle di dati, soprattutto quando provo a alternare i risultati e la modalità di progettazione in Access .

L'accesso mi dà una serie di cose ingegnose, non ultima quella dei campi incrociati, ma questa connessione sospesa al server mi fa impazzire!

Qualche guru di MS Access sa come ottimizzare la connessione ODBC in modo che non stia facendo ciò che sembra essere una scansione completa della tabella quando voglio solo modificare e costruire le mie query?

È stato utile?

Soluzione

Il driver ODBC passerà più lavoro possibile a SQL Server ma non appena si utilizza una funzione vba come Nz o una sintassi non SQL Server come PIVOT, il driver ODBC deve recuperare più dati e indici per ottenere il lavoro fatto sul lato client.

Come da altra risposta, costruisci le tue viste in SQL Server e link alle viste oppure usa un Access Data Project.

NB: le query PIVOT con un numero sconosciuto di colonne non possono essere gestite in SQL Server allo stesso modo in cui Access lo farà in modo nativo, quindi se si esegue un perno in Access contro i dati di SQL Server, è probabile che si torni indietro l'intera tabella. Le query pivot devono essere create in SQL Server utilizzando tecniche SQL dinamiche oppure viste pre-salvate che hanno tutte le colonne codificate. Dai un'occhiata a questo link per un modo per farlo:

http://www.sqlservercentral.com/articles/Advanced+ Interrogazione / pivottableformicrosoftsqlserver / 2434 /

Altri suggerimenti

Come altri hanno già detto, l'unico modo per migliorare le prestazioni su tabelle di grandi dimensioni è fare in modo che il motore di database di SQL Server faccia il lavoro per te. Un metodo per farlo che non è stato menzionato è quello di utilizzare una query pass-through, che ti consentirà di conservare tutto il codice in MS Access, senza dover creare oggetti su SQL Server:

http://support.microsoft.com/kb/303968

Dovrai scrivere SQL Server T-SQL anziché il dialetto Access; tuttavia, SQL 2005 (quando eseguito in modalità compatibilità 90) supporta un comando PIVOT.

Il mio problema simile era che la connessione ODBC ORACLE si bloccava dopo aver selezionato la tabella Link / connessione ODBC. Il responsabile dell'attività ha dichiarato di non rispondere dopo 10 minuti. Quindi la connessione esegue il ping di ORACLE per tutte le tabelle disponibili. Avevo attivato l'accesso all'amministratore ODBC di ORACLE, quindi dovevo scrivere tutte queste cose nel registro, rallentando i risultati forse di qualche ora. Il registro era di 60 MB un'ora dopo, quando l'ho spento, poi tutto è andato bene!

Per disattivarlo, vai alla scheda Installazione Oracle / Amministrazione rete / MS ODBC Adminstrator / Traccia e disattivalo!

Una buona risorsa su ODBC è qui: http: //eis.bris. ac.uk/~ccmjs/odbc_section.html

Sfortunatamente Access non è in grado di trasferire gran parte di tale lavoro sul server e, sì, eseguirà enormi scansioni delle tabelle durante la progettazione di query su più tabelle o viste in SQL Server.

Puoi creare e modificare query (viste) in SQL Server utilizzando SSMS e archiviare le viste in SQL Server per un notevole aumento delle prestazioni e continuare a utilizzare Access per il tuo front-end.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top