Un tool per convertire, mediante delle pagina ASP un database da Access ad SQL server.
E' fatto da due pagine: Con la prima viene creata una tabella su SQL Server, con gli stessi campi di quella Access, e con la seconda vengono ricopiati in modo automatico le tuple dalla tabella access a quella SQL.
I file di esempio fanno riferimento ad un database access con una tabella che ha 3 campi nominati: campo1, campo2 e campo3.
Il nostro desiderio è ricreare la stessa tabella in SQL server (SENZA AVERE ACCESSO DIRETTO AL SERVER, ma solo tramite browser), e ricopiarvi tutti i valori presenti.
Naturalmente l'esempio può esssere adattato ad un numero qualunque di tabelle e campi.
Io ad esempio ho implementato il sistema per l'upgrade di un db ACCESS con 24 tabelle (delle dimensioni di circa 85Mb) in SQL Server.
I file che allego sono un'estratto modificato per essere di esempio del mio lavoro.
Il file "connessione.inc" è il file per la connessione al database SQL Server.
Il file "Crea_Tabella.asp" ricrea la tabella
Il file "Riempi_Tabella.asp" Copia i valori presenti nella tabella Access, in quella appena creata in SQL Server
Nota:
Per tabelle con troppi campi può essere necessario spezzare la query di inserimento dei valori in più file, questo perchè gli script ASP hanno un timeout sul server dopo cui vengono bloccati.
Pagina per la creazione della tabella
<!--#include file=connessione.inc -->
Collegato!<br/>
<%
'Nell'esempio sto creando una tabella con tre campi, il primo intero e gli altri due di testo
sqlcrea = "CREATE TABLE Nome_Tabella_Da_Creare (Campo1 int, Campo2 nvarchar(50), Campo3 nvarchar(50))"
conn.Execute sqlcrea
%>
Creata tabella Nome_Tabella_Da_Creare<br/>
<%
conn.close
set conn = nothing
%>
Pagina per copiare i dati nella tabella
<!--#include file=connessione.inc -->
Collegato!<br/>
<!-- Mi sono collegato al database SQL -->
<%
'stringa di connessione (dsn-less) al database Access, che nell'esempio si chiama data.mdb e sta nella directory "/data"
dim path
path = Request.ServerVariables("APPL_PHYSICAL_PATH")
strconnAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&path&"data\data.mdb"
set connAccess = server.createobject("ADODB.Connection")
connAccess.open strconnAccess
'[Nome_Tabella] è la tabella di Access da cui voglio copiare i dati in SQL Server
sql = "select * from [Nome_Tabella]"
set Rs = connAccess.execute(sql)
If rs.eof then
response.write "nessun elemento da copiare"
response.end
Else
rs.movefirst
'faccio un loop finchè ci sono tuple da copiare dalla tabella access a quella sql
Do while not rs.eof
'Leggo i valori dal database access
'(Campo1, Campo2 e Campo3 sono i nomi dei campi del database access,
'che ho ricopiato fedelmente nella costruzione della tabella in sql)
Campo1 = rs("Campo1")
Campo2 = rs("Campo2")
Campo3 = rs("Campo3")
'inserisco una ad una le tuple dal db access a quello sql
SQL = "insert into AREA_LAVORO (Campo1, Campo2, Campo3) VALUES "
SQL = SQL & "('" & Campo1 & "','" & Campo2 & "','" & Campo3 & "')"
conn.execute(SQL)
rs.MoveNext
loop
End If
%>
Operazione Completata!<br/>