Collegamento SQL SERVER - Troppi indici sulla tabella

di il
11 risposte

Collegamento SQL SERVER - Troppi indici sulla tabella

Buongiorno,

lavoro abitualmente con tabelle collegate su SQL Server (database gestionali e contabili) e non ho mai avuto problemi.

Mi sono imbattuto in ARCA EVOLUTION (utilizzavo versioni precedenti senza problemi) che in SQL Server ha parecchie tabelle con oltre 32 Indici (tra indici propri e relazioni).

Quando tento di collegarle sia da codice che in modo interattivo, nelle sole tabelle con molti indici, mi dice “impossibile collegare la tabella eliminare indici e riprovare”.

Il codice che utilizzo da sempre prevede  (piccolo stralcio per vedere il metodo):

               Dim tdf As TableDef, DB As Database
               Set DB = CurrentDb
               Set tdf = DB.CreateTableDef(NomeTabella)
               tdf.Connect = Percorso
               tdf.SourceTableName = OrigineTabella
               DB.TableDefs.Append tdf

Il sistema operativo è Windows 2012 SERVER R2 e Access ho testato sia 2007 che 2016. le versioni successive al 2016 non sono installabili.

Esiste un modo per collegare le Tabelle selezionando solo l'indice magari della chiave primaria?

O qualche modalità di collegametno alternativa?

Le ricerche fatte da giorni non hanno portato evidenze significative.

Grazie anticipatamente.

11 Risposte

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Che dire… Elimina alcuni indici e riprova

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Grazie Oregon, 

    probabilmente non mi sono espresso bene. Non posso certo eliminare da un database sql di Contabilità generale non scritto da me alcun indice. Sicuramente ne precluderei il funzionamento.

    Chiedevo se nelle varie tecniche utilizzabili per allegare delle tabelle ce ne fosse qualcuna che mi possa permettere di selezionare magari solo alcuni indici.

    Grazie comunque.

    30/04/2024 - oregon ha scritto:


    Che dire… Elimina alcuni indici e riprova

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    30/04/2024 - Pin01 ha scritto:


    Mi sono imbattuto in ARCA EVOLUTION (utilizzavo versioni precedenti senza problemi) che in SQL Server ha parecchie tabelle con oltre 32 Indici (tra indici propri e relazioni).

    che significa “mi sono imbattuto” lavori per arca? 

    si? chiedi ad arca… 

    no? allora non toccherei niente…

    30/04/2024 - Pin01 ha scritto:


    Quando tento di collegarle sia da codice che in modo interattivo, nelle sole tabelle con molti indici, mi dice “impossibile collegare la tabella eliminare indici e riprovare”.

    magari avranno collegamenti ad altre tabelle (?)

    30/04/2024 - Pin01 ha scritto:


    Esiste un modo per collegare le Tabelle selezionando solo l'indice magari della chiave primaria?

    O qualche modalità di collegametno alternativa?

    tipo: select CampoIndiceCheNonConosco from TabellaCheNonConosco?

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Grazie sihandrea,

    come detto scrivo software che prendono dati da altri gestionali, in questo caso Arca Evolution.

    Non capisco il significato che dai a : tipo: select CampoIndiceCheNonConosco from TabellaCheNonConosco?

    Normalmente allego le tabelle di sql con questi comandi:

    Dim tdf As TableDef, DB As Database
                   Set DB = CurrentDb
                   Set tdf = DB.CreateTableDef(NomeTabella)
                   tdf.Connect = Percorso
                   tdf.SourceTableName = OrigineTabella
                   DB.TableDefs.Append tdf

    ma in questo modo non funziona.

    Speravo che qualcuno mi potesse suggerire un modo alternativo di collegamento.

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Arca evolution (e non solo) dovrebbe avere una chiamata per esportare i dati per gestionali esterni (così come per l'import da gestionali esterni).

    prelevare i dati direttamente dal database non è buona cosa:

    • accedi ad un db non tuo
    • accedi a dati che possono essere di funzionamento
    • non sai come sono organizzati i dati
    • il db non dovrebbe essere crackabile
    • i dati sono del tuo cliente ma le tabelle sono di arca
    • arca potrebbe modificare tabelle relazioni e programma senza avvisarti

    se per ipotesi ti colleghi al mio db avresti difficoltà nel compattare i dati per darne un senso compiuto, al contrario se pigi su esporta tabella ti ritrovi con i dati organizzati e filtrati e senza denuncia per violazione di diritti d'autore.

    30/04/2024 - Pin01 ha scritto:


    Non capisco il significato che dai a : tipo: select CampoIndiceCheNonConosco from TabellaCheNonConosco?

    è la risposta ala tua domanda. non so come arca chiama le tabelle e i campi relativi ne come mette in relazione le varie tabelle.

    oregon ti ha scriito semplicemente di provare ad eliminare alcuni indici non potendo dire togli l'indice pippo dalla tabella pluto..

    magari provo a bucare arca e ti rispondo.

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Grazie ancora,

    sono assolutamente d'accordo che i db in generale dovrebbero avere caratteristiche di sicurezza e di chiamate dall'esterno più performanti, ma in tanti anni ho sempre fatto i conti con accessi diretti (sempre o quasi in sola lettura) che mi hanno consentito di sviluppare per i clienti software estremamente funzionali.

    Solo mi fa uscire di testa dover abbandonare una piattaforma (Access) per problemi di comunicazione con un database SQL sempre di casa Microsoft.

    Speravo davvero di trovare una modalità di collegamento differente che mi consentisse di sviluppare come faccio di solito.

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Buongiorno @Alex,

    so che rivolgermi direttamente a Te non è elegante, ma mi farebbe piacere avere un Tuo parere.

    In passato sei stato illuminante e spesso ho attinto alle Tue indicazioni (anche indirette) per risolvere alcuni problemi.

    Visto che non sei intervenuto nella discussione probabilmente non lo ritenevi opportuno, comunque volevo fare un'ultimo tentativo.

    Grazie comunque.

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Non c'è molto da dire… le specifiche di Access sono chiare, il numero massimo di Indici è 32.

    Numero di indici in una tabella
    	
    32, inclusi gli indici creati internamente per 
    mantenere le relazioni tra tabelle 
    e gli indici a campo singolo e compositi. 

    https://support.microsoft.com/it-it/topic/specifiche-di-access-0cf3c66f-9cf2-4e32-9568-98c1025bb47c

    Per questo solitamente si creano delle Viste ServerSide… ma devi fartele fare poiché immagino tu non sia Amministratore del Database…

    Se non puoi non è detto serva abbandonare Access ma sicuramente Jet… puoi sempre aprire recordset diretti al database senza avere Local linkedtables…

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Grazie @Alex, 

    avevo già iniziato stamattina a testare i recordset aperti direttamente e sono riuscito a leggere i dati, solo così lo sviluppo per me è più lento.

    Cercherò di creare le viste lato server perchè, anche se non sono amministratore, hanno lasciato l'accesso trusted libero.

    Grazie ancora

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Non può essere più lento… ma temo che in questo giochi molto l'esperienza… di come gestisci la connessione, di come scrivi i predicati SQL che 9 su 10 sono la causa dell'affossamento delle prestazioni per chi, con poca esperienza non conosce le modalità di scambio dati Client-Server, e serve eempre saper come limitare i dati… se usi o meno le transazioni…

    Esempio banale al fine di farti capire…

    Questa Query è estremamente inefficiente:

    "SELECT * FROM T1 WHERE ID=FORMS!TuaForm!CampoId"

    Questa è la stessa ma efficiente:

    "SELECT * FROM T1 WHERE ID=" & FORMS!TuaForm!CampoId

    Spero tu ne comprenda l'enorme differenza intermini di scambio dati… se non lo comprendi è il primo problema che devi risolvere.

    Ovviamente di questi esempi se ne possono fare mille…

    Ci sono molte variabili che probabilmente nemmeno prima avevi valutato… ed ora si notano di più.

    Purtroppo in questi aspetti non c'è molto da poterti suggerire perché bisognerebbe analizzare le modalità di scrittura del codice e dei predicati…

  • Re: Collegamento SQL SERVER - Troppi indici sulla tabella

    Grazie ancora,

    capisco bene la differenza che evidenzi e cerco di non fare mai quel tipo di errore … nel primo caso viaggeranno in rete una marea di dati in più.

    Mi riferivo al fatto che con le tabelle linkate posso interattivamente fare più speculazione in tabelle di database non documentate.

    In ogni caso sono riuscito a creare la vista lato server che mi semplifica enormemente la vita.

    Comunque ancora grazie per il prezioso contributo.

Devi accedere o registrarti per scrivere nel forum
11 risposte