Home Page  >>>  Training  >>>  ASP

Registrati su TheZion
Password Persa




Connessioni DSN-less e OLE DB by neo
Abbiamo visto come è possibile agganciarsi ad una qualsiasi fonte dati attraverso ODBC. Sfortunatamente questa tecnica presenta un difetto che la rende scomoda nel caso dell'hosting virtuale.

Infatti per accedere alla fonte dati è necessario crearla dal pannello di controllo di windows, e solo un'amministratore può farlo (non dimenticate che stiamo parlando di Windows NT). Quindi per ogni nostra necessità saremo comunque interfacciati all'amministratore e in ogni caso non avremmo nessuna possibiltà di agire in modo autonomo per amministrare il database.
Per siti di piccole dimensioni il costo aggiuntivo di una connessione ODBC non vale la pena.
Per siti a scopo commerciale una tale soluzione rischia di rivelarsi ingestibile a causa delle scadenti prestazioni intrinseche a ODBC.

In nostro soccorso ci vengono due connessioni made in Microsoft.


La connessione avviene nel solito modo, dichiarando un'oggetto ADOdb.connection. L'unica differenza è nella stringa di connessione.

Analizziamo prima quella relativa alla DSN-less.

Nella stringa di connessione va specificato il driver, il database e la directory fisica del nostro database.
strconn="driver={microsoft access driver (*.mdb)}; dbq=miodatabase.mdb; defaultdir="+dir+"/ ;"

Come avrete notato la defaultdir è passata come variabile. Questo perché noi non sappiamo il percorso fisico della cartella dove è contenuto il nostro database.
Per ovviare tale necessità basta invocare il metodo mappath dell'oggetto server per memorizzare, prima di assegnare la variabile strconn, in dir il percorso fisico.
La successione corretta per connettersi è quindi la seguente.
dir=server.mappath(".")
strconn="driver={microsoft access driver (*.mdb)}; dbq=miodatabase.mdb; defaultdir="+dir+"/ ;"

A questo punto basta aprire la connessione nel solito modo.
dataconn.open strconn

Un piccolo appunto per gli utenti Windows 9x.
Poichè il server che ospiterà il vostro db sarà basato su Windows NT ci sono buone possibilità che il disco sia partizionato con NTFS (lo stesso vale per server basati su Windows 2000).
Tra i tanti vantaggi di questo file system c'è la possibiltà di impostare i permessi di accesso sui singoli file.
Questo significa l'utente generico che accede da internet (chiamato IUSR_NOMESERVER) potresbbe non avere i permessi di scrittura sul database.
Pertanto se operate in scrittura sul database attraverso una pagina ASP si potrebbe verificare il classico errore

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.

Prima di impazzire sul codice da voi prodotto contattate l'amministratore del server e fatevi impostare i privilegi di scrittura per l'utente guest internet sul vostro file.

Passiamo ora alla connessione OLE DB.
Utilizza una stringa di connessione abbastanza complessa dove si devono passare oltre al driver anche le informazioni sulla sicurezza per collegarsi a SQL server.

strconn="Provider=SQLOLEDB.1;User ID=WWW;password=websql;Initial Catalog=database;Data Source=SQLSERVER;Connect Timeout=15"
Analizziamo in dettaglio la stringa.
Provider Indica il driver OLE DB da utilizzare per la connessione.

User ID In Sql Server 7 ogni accesso ai database necessita dell'autenticazione. Per collegarsi è quindi necessario fornire al provider l'user id per accedere al db.

Password Idem come sopra.

Initial Catalog A differenza di Access, Sql server è un server di database. Può quindi contenere un grande numero di database. Questo parametro serve a dire al provider quale database utilizzare.

Datasource È l'indirizzo del server di database. Può essere fornito come nome WINS, nome DNS oppure come indirizzo IP.

Connect timeout Imposta il tempo in secondi entro il quale il database deve restituire un timeout in caso di mancata risposta.

Quando si accede ad un database del genere si ha lo stesso tipo di problematiche che si hanno con Windows NT.
Il database server puo' contenere diversi utenti con diversi livelli di privilegio ed ogni utente (ad eccezzione dell'amministratore) ha diritto di accesso solo su determinati database.

Avendo un client per Sql Server fornito nella versione di valutazione 120 giorni scaricabile dal sito di microsoft e fornendo al client gli stessi parametri della stringa di connessione (ovviamente nella finestra di registrazione server), è possibile amministrare il proprio database in locale in una comoda vista ad albero.


Tutti i parametri illustrati sopra devono essere forniti dal Database Owner o dall'amministratore del sistema.

La connessione avviene poi nel solito modo
dataconn.open strconn



Leggi commenti

Numero commenti inviati: 0