Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    L'unica strada per affrontare il tuo (strano) problema mi sembra quello di abbassare il timeout della connection al db e testare tutti gli indirizzi in sequenza.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #12
    questa è una strada. ma come ho detto preferirei evitarla.

    primo, perchè non ho la certezza che i db sui vari indirizzi abbiano lo stesso nome dappertutto e purtroppo il db2 risponde al nome alias catalogato su ogni singola macchina e non ad un indirizzo ip e questo già sarebbe uno scoglio non da poco.

    secondo, ho dei canoni di scrittura delle applicazioni e per quando esistano sempre le deroghe, se posso evitare di sparare nel buio per vedere dove colgo, preferisco ^^

    quindi rinnovo la domanda:

    come posso interrogare da delphi le catalogazioni dei nodi e database del DB2?

  3. #13
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da FengHuang
    so gli indirizzi ip dei nodi ma non i nomi dei server.
    In quel caso, non vedo come tu possa risolvere: per poterti collegare a un DB, devi poterlo raggiungere e conoscerne il nome, e il DB deve averne uno specifico o noto, perché anche ammesso che tu possa ottenere un elenco dei DB disponibili - e sarebbe un incredibile problema di sicurezza, a mio parere - e anche il loro nome, e metti che ve ne sia più di uno che risponde da un certo indirizzo IP, devi avere una convenzione che ti consenta di scegliere a quali di questi ti devi collegare.


    Originariamente inviato da FengHuang
    inoltre se provo a fare il connect ad un indirizzo "sbagliato" ci mette una vita prima di rispondermi che la connessione non è possibile quindi tentativo "alla cieca" vorrei evitarlo.
    Questo si risolve abbastanza facilmente: è sufficiente abbassare il timeout di connessione nel momento in cui cerchi di collegarti a un DB, mettendolo ad esempio a zero; se la connessione non avviene, passi all'altro nodo, altrimenti hai già la connessione aperta e pronta all'uso.


    Originariamente inviato da FengHuang
    fino ad oggi l'applicazione chiede un parametro in ingresso che è il nome del DB a cui collegarsi.
    oggi però si è aggiunta la terza opzione, ovvero l'esecuzione standalone dell'applicativo e volevo cogliere l'occasione per automatizzare la scelta del "puntamento" corretto in modo da tolgiere l'imbarazzo all'utente non proprio furbo.
    In tal caso, ti basta creare una mappatura con gli indirizzi IP e i nomi di server di database e associarli all'utente che acceda in modo che, a seconda dell'utente, ci si colleghi - o si provi a farlo - al database predestinato.

    Originariamente inviato da FengHuang
    se è sulla lan, utilizzo un punto di accesso
    se è su internet utilizzo un altro punto di accesso
    altrimenti se non è proprio su nulla, utilizzo il db locale.
    Questi scenari si risolvono creando un'architettura multitier.

    Originariamente inviato da FengHuang 1
    lo so anche io che potrei semlicemente "tentare" le connessioni e vedere se funzionano, ma come ho detto ci vuole troppo tempo e la trovo troppo "pressapoco" come modalità.
    Secondo te, è più veloce ottenere i cataloghi e le informazioni esistenti da tutti i vari server piuttosto che cercare di collegarti con "timeout zero" al primo server - che ottimisticamente risponderà - o al successivo?

    Fermo restando che una volta ottenuto l'accesso, la connessione devi aprirla comunque.

    E aggiungendo inoltre che, benché un server si renda magari disponibile, potrebbe non esserlo più nell'istante successivo in cui si apre la connessione, dando luogo a vicoli cechi nella logica che stai cercando di implementare.

    Originariamente inviato da FengHuang
    non ho la certezza che i db sui vari indirizzi abbiano lo stesso nome dappertutto
    primo, Il nome devi averlo per forza, perché se ottieni i nomi dei DB disponibili su un server, poi devi sapere quale di questi è quello a cui ti devi collegare, supponendo che ve ne sia più di uno.

    Originariamente inviato da FengHuang
    secondo, ho dei canoni di scrittura delle applicazioni e per quando esistano sempre le deroghe, se posso evitare di sparare nel buio per vedere dove colgo, preferisco ^^
    Qui si parla di software: non c'è un danno o un consumo strutturale se tenti di collegarti a un database e questo non risponde, per cui se questo tipo di operazione consente di verificare contestualmente alla connessione se un database è disponibile, e richiede meno tempo dell'ottenere cataloghi e informazioni estese su server e database, magari numerosissimi e a cui mai ti collegherai, allora è la soluzione giusta. Inoltre, la soluzione verso cui ti stai indirizzando è assolutamente non scalabile: all'aumentare del numero dei server diventerà sempre più lenta e ingestibile, al contrario di quelle che sono state proposte. Infine, è una scelta farraginosa che complicherà numerosi altri aspetti: non essere sicuri del database a cui ci si collega, l'impossibilità di stabilire delle priorità di database sullo stesso nodo o su diversi nodi.

    Il fatto di dire "non voglio provare a connettermi a un database perché voglio evitare di sparare nel buio" tecnicamente non ha alcun fondamento.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #14
    quindi alla fine il succo è, non si può avere la lista dei db, corretto?

    ovvero se volessi farmi un programmino semplice, di nessuna utilità che mi da la lista dei db non posso?

    io fatico a crederlo, e non credo nemmeno sia un problema di sicurezza. dalla consolle del db2 non chiede ne utente ne password a fronte di un "list db directory"...


    comunque, a parte questo, come lo setto un timeout in una connessione dbx? ho ravanato un po ma non l'ho trovata da nessuna parte come proprietà...

  5. #15
    Propabilmente si può ma secondo me, come si legge in ciò che Alka scrive, andrebbe rivista l'architettura del software.
    Quel programma è nato per una rete locale, non per andare in internet. Probabilmente riuscirai nel tuo intento ma ti troverai in certi momenti un programma estremamente lento quando ad esempio dovranno essere fatte query impegnative.

    Secondo me per avere una situazione affidabile ed efficiente dovresti rivedere l'architettura o farlo usare in terminal server.

  6. #16
    Originariamente inviato da denis76
    Propabilmente si può ma secondo me, come si legge in ciò che Alka scrive, andrebbe rivista l'architettura del software.
    Quel programma è nato per una rete locale, non per andare in internet. Probabilmente riuscirai nel tuo intento ma ti troverai in certi momenti un programma estremamente lento quando ad esempio dovranno essere fatte query impegnative.

    Secondo me per avere una situazione affidabile ed efficiente dovresti rivedere l'architettura o farlo usare in terminal server.
    chiedo scusa, ma la facilità con cui consigliate la reingegnerizzazione di un software di cui non sapete quasi nulla, (che per Vs. informazione comprende circa 50 programmi, distribuiti su circa un migliaio di utenti dislocati in giro per l'italia) mi lascia abbastanza... perplesso.

    volente o nolente la mia struttura è questa e con queste cose devo lavorare.

    io apprezzo sempre i suggerimenti ma nel fatto specifico ho fatto una domanda tecnica.

    che mi serva per fare un "helloworld" o per mandare in orbita lo shuttle, per come la vedo io, utente "terzo" che cerco di rispondere, dovrebbe importare poco. o so rispondere o non so rispondere.

    poi posso parlare di filosofia, so perfettamente che il perfetto non esiste e che quindi su tutto c'è un'ampio margine di miglioramento, ma se chiedo a qualcuno se sa in che via è la banca di paperopoli perchè ho un appuntamento lì e questo mi risponde che la banca di topolinia è migliore, mi è poco utile... o sbaglio?

  7. #17
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da FengHuang
    chiedo scusa, ma la facilità con cui consigliate la reingegnerizzazione di un software di cui non sapete quasi nulla, (che per Vs. informazione comprende circa 50 programmi, distribuiti su circa un migliaio di utenti dislocati in giro per l'italia) mi lascia abbastanza... perplesso.
    [...]
    poi posso parlare di filosofia, so perfettamente che il perfetto non esiste e che quindi su tutto c'è un'ampio margine di miglioramento, ma se chiedo a qualcuno se sa in che via è la banca di paperopoli perchè ho un appuntamento lì e questo mi risponde che la banca di topolinia è migliore, mi è poco utile... o sbaglio?
    Su questo concordo perfettamente con te.
    Infatti io commento l'idea da implementare per il meccanismo che vuoi inserire ex novo.

    Originariamente inviato da FengHuang
    come lo setto un timeout in una connessione dbx?
    Prova ad aggiungere
    ConnectTimeout=0
    nella proprietà Params del componente TSQLConnection.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #18
    ci ho provato ma mi ignora. ci prova comunque per 20 secondi

  9. #19
    Potresti per mezzo di thread avviare contemporaneamete tutte le connessioni e poi tenere quella che si completa per prima correttamente no?

  10. #20
    Originariamente inviato da denis76
    Potresti per mezzo di thread avviare contemporaneamete tutte le connessioni e poi tenere quella che si completa per prima correttamente no?
    se non trovo il modo di settare un timeout ne di ricavare la catalogazione questa idea mi garba assai

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.