Newsgroup: it.comp.www.asp
Titolo: Aiuto per connessione OLE DB con SQL2000

Ciao a tutti,
sono agli inizi con ASP, ma finora non ho avuto particolari problemi: in
qualche modo sono sempre riuscito a cavarmela.
Sono invece bloccato su un problema che sembra non aver avuto nessuno, per
cui probabilmente mi sto arroccando inutilmente.
Devo collegare la mia applicazione ASP ad un server SQL 2000 che si trova su
una rete esterna a quella dove risiede IIS.
Avendo visto che con il client SQL riesco ad accedere al database remoto con
password "password" e userid "userid", apro la mia connesione OLE DB con
questo codice:
<%
strOLEDB = "Provider=SQLOLEDB;Persist Security
Info=False;uid=userid;pwd=password;Initial
Catalog=motonoleggi;server=XXX.XXX.X.XXX"
set conn=server.createobject("ADODB.connection")
conn.open "SELECT * FROM CLIENTI", strOLEDB ' (1)
%>
La pagina ASP però mi dà questo errore:
"Data source name not found and no default driver specified"
Poi ho visto, che se non faccio nessuna query in SQL non mi dà errore:
cioè, se in (1) metto
    conn.open strOLEDB
sta zitto.
Come faccio?
Ringrazio chiunque mi sappia dare un'idea per andare avanti.
--
--
Giampaolo Bellavite
// webmaster Motonline.com
Internet: 
http://www.motonline.com
E-mail: 
gbell...@motonline.com
Messenger: 
bell...@hotmail.com
Tel.: 02.3070.2334
--------------
MOTONLINE.COM
 - Born to be netbikers
    Il primo portale verticale dedicato
    agli appassionati di motociclismo


Moderatore di it.comp.www.asp
Sito di supporto: 
http://www.aspitalia.com/newsgroup/
La più grande community italiana di sviluppatori!

 una rete esterna a quella dove risiede IIS.
Io uso:
Provider = "Provider=SQLOLEDB;"
Persist = "Persist Security Info=False;"
UserID = "User ID=sa;"  ' <--- sa in genere e' l'accesso amministratore
                                       ' a SQL, io uso quello perch'
posso... se no vedi te
Database = "Initial Catalog=NOME_DEL_DB_SU_SQL;"
DSN = "Data Source=NOME_DEL_SERVER"
Conn.OPEN Provider & Persist & UserID & Database & DSN
--
Red Foxy
Web Master of Quantum Leap: 
http://ql.programmazione.it

 Conn.OPEN Provider & Persist & UserID & Database & DSN
Grazie mille.
Mi hanno aiutato anche via e-mail (come spiego nell'altro post) !
Volevo sapere, visto che ci sono: è necessario mettere per forza UserID e
Password dell'utente che accede al database? Questo non potrebbe
compromettere la sicurezza? Se ad esempio uno riesce ad accedere al server
via FTP, ecco che è già a conoscenza dei dati.
O c'è qualche cosa che mi sfugge?
--
Giampaolo Bellavite, Milano     E-mail: 
bell...@3nd.it
ICQ: 99999936     Home page: 
http://www.3nd.it/bellavite

 via FTP, ecco che è già a conoscenza dei dati.
Se uno riesce ad accedere al server via FTP stai tranquillo che riesce anche
ad accedere al server SQL :-D
ciao
--
Kappa
kappa**nospam**@
webngo.net
www.webngo.net

 set rs = conn.Execute(SQL)
Ok, andando a casaccio, in effetti, ci ero riuscito anche io.
Perň poi sul manuale scopro che Execute non permette l'utilizzo di cursori!
Con l'aiuto di un lettore del newsgroup sono arrivato alla seguente
soluzione.
Inoltre credo di aver finalmente capito come funziona la connessione per i
recordset, che era quello che mi serviva!
Dovevo usare infatti:
    set rs=createobject("ADODB.recordset")
e non
    set rs=createobject("ADODB.connection")
Ma a questo punto vorrei assicurarmi di aver capito giusto: a che serve
realmente ADODB.connection? Quando e perché lo devo utilizzare?
Comunque suggerisco a chi scrive manuali e FAQ di mettere piů in evidenza
ADODB.connection vs. ADODB.recordset :-)


 O c'è qualche cosa che mi sfugge?
Via FTP e' peggio... Perche' vuol dire che il db e' scaricabile... e cmq via
ftp non ti puoi collegare, per usare, al tuo db...
Ciao ;^)=


 ADODB.connection vs. ADODB.recordset :-)
in realtà è chiaro, dal nome: conn serve per aprire la connessione al
database, .recordset per creare il recordset.
che poi il metodo .open dell'oggetto RS permetta di specificare, come
connessione, un oggetto già creato o una stringa, è un altro par di
maniche... :-)


 database, .recordset per creare il recordset.
Chiaro, ma il recordset si costruisce anche se non apro la connessione al
database. Infatti, da quanto ho capito, recordset apre implicitamente la
connessione, per cui ADODB.connection non mi interessa.
E' un ragionamento giusto?


 E' un ragionamento giusto?
mi piacerebbe se ci arrivassi da solo.
secondo te è meglio questo codice
<%
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, strConn
...
set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open sql2, strConn
%>
rispetto a quest'altro:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConn
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, Conn
...
set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open sql2, Conn
%>
ovviamente manca la fase di "pulizia" degli oggetti.


 ovviamente manca la fase di "pulizia" degli oggetti.
8-(
Pulizia degli oggetti?
[PS. comunque grazie. Ho sempre creduto che i newsgroup fossero utili, ma mi
trovavo più dalla parte di chi aiutava. Ora che sono aiutato, capisco quanto
le cose per alcuni banali possono essere indispensabili per altri]
