Newsgroup: it.comp.lang.visual-basic
Titolo: Connessione db SqlServer + vb

Salve a tutti!
ho un problema per quanto riguarda la connessione di un db SqlServer.
Parto da un mio applicativo realizzato in vb6 e come base di dati access97 e
accesso ai dati con DAO.
Ora devo trasportare il tutto (dati e codice) per lavorare con sql server.
Ho importato un il db access 97 e settato sql Server per accesso a livello
di utente di sql server.
Ho creato il DSN di sistema e cambiato l'apertura nel programma in questo
modo :
Set db = wrk.OpenDatabase("MIODB", dbDriverPrompt, False,
"ODBC;DSN=MIODB;UID=test;PWD=test;")
il mio applicativo riesce ad accedere al db ma mi dice che è di sola
lettura...
Ho provato con lo stesso utente ma con adodb e tutto è a posto e riesco a
scriverci!
Sapete dirmi il perche'???
grazie mille a tutti

 lettura...
Hai verificato che l'utente test abbia i diritti sul db ?

 Hai verificato che l'utente test abbia i diritti sul db ?
Se ti dice che con ado funziona, vuol dire che il db è ok ... e che
magari c'è qualche cosa da settare su dao ... non sò cosa perchè
è roba per i nonni :)
Lupo magari qua mi fustiga ...
-- 
Saluti
Andrea Moro
Sito Comune : 
http://www.it-lang-vb.net

 magari c'è qualche cosa da settare su dao ... non sò cosa perchè
Sorry ma su Sql Server puoi settare gli utenti con diritti di sola lettura e
altri di sola scrittura, possono essere dbowner, avere accesso a una singola
tabella e altro, è una domanda piu che normale visto che SUCCEDE
tranquillamente di essersi dimenticati di dare le giuste autorizzazione se
non si lavora con una connessine trusted
MAX


Si ho controllato l'utente test e a permessi è tutto a posto!
Cmq grazie, ma con DAO +SQL server è possibile creare dei recordset
dbopendynamic e poi modificarne il contenuto con edit e update?

 dbopendynamic e poi modificarne il contenuto con edit e update?
Non he ho idea.
MAX

 su tabella senza indici non riesci.
ho provato il metodo edit quindi non dovrei avere quei problemi...
cmq gli indici sono a posto...
ma qualcuno usa DAO + SQLSERVER???

 ma qualcuno usa DAO + SQLSERVER???
no, nessuno, a meno di essere estremamente masochisti. DAO funziona,
piuttosto bene per altro, solo con access. Per funzionare con altri database
deve fare finta che siano access, un po' come quando importi i collegamenti
ad altre tabelle in access.
Salutoni
Sergio

[*Fer di Nanto* : 
latta...@virgilio.it
] ha scritto:

L'ho fatto, via Access con tabelle collegate a SQL Server. Funzionava, ma
con tempi pietosi.
Sono passato a ADO (ovviamente senza di mezzo access). Funziona, con tempi
similmente pietosi.

similmente pietosi.
Nessuno usa piu' RDO ?
Stefano "HappyMan" (Lago Maggiore - NO)
--
http://www.sgr.info
Email happyman69 (at) 
libero.it

 Nessuno usa piu' RDO ?
Buttalo :P


 tempi similmente pietosi.
Francamente io gli faccio fare delle query spaventove nel vero senzo
della parola, roba di conti matematici inverosimili ... e va che è una
scheggia, mai aspettato più di due o tre secondi ... per quelle stralunghe
passando per giunta per una serie di dll che mi sono fatto al fine di
incapsulare lo strato db in un mondo tutto suo.
Dipende ovviamente da come sono ottimizzate le query, a volte anche
un piccolo spostamento dei campi da recuperare, delle join e simili
(specie le join) incrementa in modo significativo le prestazioni.


Ce l'ho fatta!! almeno per l'edit...
ma ho superato l'ostacolo Jet utilizzando invece ODBCdirect...
ecco come ho fatto...
Set wrk = DBEngine.CreateWorkspace("MIOCLIENTE", "Admin", "", dbUseODBC)
Set dbDati = wrk.OpenDatabase("", 0, 0,
"ODBC;DSN=MIOCLIENTE;UID=test;PWD=test;DATABASE=MIOCLIENTE;")
a questo punto per eseguire delle query e poi aggiornarne i recordset ....
Set rs = dbDati.OpenRecordset(sel, dbOpenDynamic, 0, dbPessimistic)
e con i metodi .edit e .update tutto funziona...
ma se faccio .addnew al momento del .update mi da il seguente errore...
ODBC: chiamata non riuscita
sapete dirmi il perche?

Fer di Nanto wrote:
<snip>
Per favore, lascia stare DAO e passa ad ADO.
Lupo, i tempi di ADO con SqlServer sono ottimi, se non
riesci a creare un db ottimizzato per SqlServer non è
colpa di M$.
Quando si parla di RDBMS è *tutto* importante, a partire dalla
pianificazione e la progettazione del DB, che deve essere accurata e
minuziosa in ogni singolo minimo dettaglio.
Vanno, inoltre, compresi e sfruttati gli strumenti a disposizione dei
programmatori( Enterprise Manager, QueryAnalyzer et similia ),
vanno esaminati i query plan e tutto il resto... non è facile, ma una
volta presa l'abitudine diventa automatico...
Andrea

> Per favore, lascia stare DAO e passa ad ADO.
Se solo hai voglia di darmi una mano a cambiare circa le 2000 query del
software che ho in gestione... :)
grazie cmq!


Le query non cambiano (tranne magari qualche like), da DAO ad ADO.
Le query cambiano da Access a Sql-Server, ma questo indipendentemente dalla
libreria.
Ciao
Alberto
PS: sto ancora aspettando che tu completi quei test che ti erano stati
chiesti per quel bug del msgbox su XP.
Pensi di proseguire e approfondire la cosa, o a te interessa solo chiedere?
-- 
Santo cielo, Magnum, si può sapere cos'è questo baccano?
Higgins, posso spiegarle...
Credo non sia necessario.
Zeus, Apollo, a voi...

> Le query non cambiano (tranne magari qualche like), da DAO ad ADO.
si lo so.. scusa mi sono espresso male... intendevo dire le aperture e le
dichiarazioni...
e siccome il software non l'ho scritto io... sarà molto dura e in piu mi
hanno dato solo
pochi giorni di tempo...
cmq grazie!

 cmq grazie!
Grazie 'sto par de balle.
I miei test per i msgbox di XP?
Porco cane, ma per una volta che si riesce a riprodurre un bug, e ti chiedo
di verificare se la mia soluzione sistemava anche il tuo ambiente, devo
diventare matto per avere una risposta?
E' mai possibile che la gente voglia solo pappe pronte, e non abbia un
minimo di interesse per approfondire le cose?
Alberto

 colpa di M$.
Io non ce la faccio più!
Insomma, se in una tabella ci devono stare quei campi (perchè mi servono,
punto) e ci metto un indice con chiave univoca e poi faccio una Select  *
From Tabella, mi dite, una volta per tutte, in cosa consiste questa
"ottimizzazione" e come faccio a far andar ADO+SQL Server ad una velocità
accettabile?
Per favore, davvero, ve lo chiedo per favore.
Ne ho davvero bisogno e sono disposto a cambiare tutto il database e pure
tutto il codice, persino il server, ma la mia necessità (credo più che
accettabile) è _solo_ questa:
---Nella tabella ci sono "n" campi e ci devono rimanere perchè li devo tirar
su tutti!
Da dove caspita parto per "ottimizzare"? Grazie, grazie, grazie!!!

 Da dove caspita parto per "ottimizzare"? Grazie, grazie, grazie!!!
Prego, prego, prego.
Non c'è niente da ottimizzare.
Aggiungere un indice, in una situazione come la tua, significa perdere in
performance, per l'overload richiesto per l'aggiornamento dell'indice.
Ha un senso solamente se devi fare un Order By (e allora può aiutare un
indice sul campo di order), o un Where (e vai con l'indice sul campo di
where), o un Join.
Per esigenze di Select * from tabella, l'indice non serve e non aiuta.
L'unica ottimizzazione deriva da questioni di sistema, ossia compattazione
automatica del db, defrag del disco con Sql-Server spento, eccetera.
Ciao
Alberto


 Da dove caspita parto per "ottimizzare"? Grazie, grazie, grazie!!!
Inizia a normalizzare il DB e vedi se va meglio :-)
Andrea

 Server ad una velocità accettabile?
a parte i consigli che ti hanno dato gli altri, io proverei a vedere se è
sempre così necessario fare un select * from.
Non ti serviranno mica sempre tutti i campi di tutti i record, vero?
Salutoni
Sergio

 Inizia a normalizzare il DB e vedi se va meglio :-)
Normalizzare? Prima, seconda o ventesima regola?
Il mio db non ha una sola ridondanza, che normalizzo per continuare a
ottenere quel che devo ottenere?

 automatica del db, defrag del disco con Sql-Server spento, eccetera.
Ecco, questo mi piace (nel senso che mi torna). Vedi anche risposta a
DeerBear.

[*CSSoft* : 
cssof...@hotmail.com
] ha scritto:

In alcune occasioni sì, comunque io sono per i confronti: se una cosa
impiega così e in altro ambiente impiega colà io annoto la differenza.
Qualunque sia la cosa, ma, ovviamente, identica, quindi confrontabile.
Come dicevo in altra recente occasione, sono il primo a dire che se sto lì a
limare ogni query per davvero verificare quanto mi serve, impiegherò 8 anni
(l'ho fatto una volta, recentemente, dopo due giorni son saltati fuori
errori ovunque, perchè avevo cappellato omettendo un po' di campi), ma potrò
ottimizzare riducendo i tempi di un 5/10 %, non di più, scommetto con me
stesso.

 un 5/10 %, non di più, scommetto con me stesso.
io sarò partito da una condizione peggiore della tua, perchè come
programmatore non ho certo la tua esperienza e spesso le mie "prime stesure"
sono delle ciofeche devastanti, però modificando la logica di raccolta dei
dati (utilizzando pesantemente i where) ho velocizzato di molto l'esecuzione
di alcuni compiti. Usando sempre lo stesso db, il povero e bistrattato
access.
Una volta o l'altra dovrò dare una occhiata al tuo progetto di confronto tra
dao e ado ;-)
Salutoni
Sergio

 ottenere quel che devo ottenere?
Sei sicuro che non ha ridondanze? Meglio :-)
Allora prova a vedere il query plan che ti esegue per
quella Select... stai a vedere che ti fa fare qualche cavolata... ma
chiavi primarie ne hai impostate, vero? :-)
Andrea

 modo un po' diverso.
Se quella Select la devo fare, in un ambiente o nell'altro, permetti che la
possa usare come confronto, a parità di informazioni nel database? Con
questo intendevo semplificare con quella Select * molto generica, apposta

 minimo di interesse per approfondire le cose?
Non è che voglio la pappa pronta ma è che dovendo purtroppo lavorare come
collaboratore in un ufficio di figli di put&%$ana e soprattutto contanto che
il bug non veniva a me ma ad uno dei sopracitati figli e soprattutto
pensando che
mi pagano per cio che produco .... proprio non c'ho pensato per niente a
quel bug!!
Mi dispiace veramente e poi avevo letto la tua risposta al mio thread solo
in parte
perche qui neanche ammettono l'utilizzo di NG quindi tocca che prima di
lasciare
il pc (anche solo per pranzo) devo cancellare tutti i msg scaricati... :(
Spero di essermi spiegato un po' meglio e spero inoltre di poterti dare una
mano
in casi a me piu accessibili.
Ciao Ciao
Alessandro

 scaricati... :(
Beh, però dicendo una cosa del genere fai passare la voglia di darti una
mano, giusto?
Tanto, se le risposte le leggi 'solo in parte'...
Considera che lo stesso promemoria te l'avevo già postato in altri thread, e
finchè non mi sono incazzato non hai neppure pensato di postare un 'scusa,
ma non riesco a risponderti', oppure un 'non c'è più il bug, quindi lasciamo
perdere'.
Hai semplicemente ignorato i miei messaggi.
Comunque, alla prossima.
Ciao
Alberto

> Hai semplicemente ignorato i miei messaggi.
Non credo di aver ignorato i tuoi messaggi Alberto, credo solamente
che purtoppo dovuto al fatto che ti ho citato prima sicuramente mi sono
sfuggiti perche infatti appena ho visto questo tuo promemoria ti ho risposto
immediatamente. Mi piace essere il piu corretto possibile nelle mie
capacità.
Ciao
Alessandro

 Da dove caspita parto per "ottimizzare"? Grazie, grazie, grazie!!!
Io partirei da qui
http://www.microsoft.com/italy/sql/using/articoli/amministrazione.asp
Spero di esserti di aiuto.
Ciao
Alessandro
--
Morfeus®
Free Joint
:PII