PBsoft
2006-12-17 09:19:08 UTC
Ho dedicato tutta la giornata di ieri a cercare in internet, tra news, blog
e riviste, informazioni dettagliate su come impostare come server collegato
un IBM AS/400, ma la ricerca ha avuto poca fortuna.
Come ambiente di prova, prima di andare a toccare il server del cliente dove
è installato SQL 2005, ho utilizzato il mio portatile, dove pure si trova
un server SQL 2005 (la versione Express with Advanced Services SP1), ovviamente
collegato nella LAN del cliente, in modo da vedere il server IBM.
Per poter collegarmi tramite ODBC al server IBM, sapevo che è indispensabile
installare anche "IBM Client Access", quindi l'ho installato anche se il
mio cliente ha una versione decisamente vecchia.
Fatta questa installazione ho utilizzato "Operation Manager" per definire
una connessione al server IBM del cliente: questo passo è necessario perché
va a definire sulla macchina locale (il mio portatile, in questo caso) un
nome identificativo con il quale essa può fare riferimento (tramite ad esempio
un driver ODBC) al server IBM e l'utente tramite il quale stabilire il collegamento
ad esso. Infatti, tramite "Operation Manager" ho creato questo "identificativo"
e l'ho chiamato SERVERIBM.
A questo punto ho definito un DSN di sistema, sfruttando i driver "Client
Access ODBC" installati insieme a "IBM Client Access": in questo DSN ho definito
la libreria alla quale fare riferimento (NSEUCOM01). Ho chiamato il DSN "AS400".
Fatto questo, tramite SSMS Express ho provato a definire un server collegato,
ma l'elenco dei provider è vuoto (ho provato più volte a farne il refresh).
Sinceramente non me lo aspettavo, visto che sul mio pc dell'ufficio, quell'elenco
è altamente popolato (anche se nel mio ufficio ho SQL 2005 Developer con
SP1).
Questo (purtroppo) mi ha fatto ripiegare sul T-SQL e la stored procedure
sp_addlinkedserver.
Per imparare ad utilizzare questa stored procedure ho ovviamente consultato
i BOL, ma ho anche fatto numerose ricerche in internet, senza purtroppo riuscire
a trovare qualcuno che avesse avuto il mio stesso problema.
Alla fine, dopo varie consultazioni online, quello che ho ottenuto è stata
la seguente istruzione SQL:
EXEC sp_addlinkedserver
@server = N'IBMSERVER',
@srvproduct = N'Microsoft OLE DB Provider for ODBC Driver',
@provider = N'MSDASQL',
@datasrc = N'AS400',
@provstr = N'UID=QPGMR;PWD=QPGMR'
Ci tengo a precisare che la predetta istruzione viene terminata correttamente
ed il server viene aggiunto tra quelli collegati. Tuttavia, se di seguito
provo a fare una banale SELECT, ottengo il messaggio di errore 7302, che
mi informa (vado a memoria) di non essere riuscito a creare un'istanza OLE
DB del provider MSDASQL.
Anche per la SELECT in questione ho provato diverse forme:
SELECT * FROM OPENQUERY(IBMSERVER, 'SELECT * FROM NSEUCOM01.ANCLI00F')
SELECT * FROM IBMSERVER.S443482A.NSEUCOM01.ANCLI00F
Ho anche provato a collegare il server specificando, come @provider, "IBMDA400"
al posto di "MSDASQL". Questo avrebbe dovuto permettere a SQL 2005 di utilizzare
il driver OLE DB di IBM (anche se ho letto in internet che è veramente poco
stabile).
Anche in questo caso ho ottenuto il messaggio 7302.
A questo punto, l'unica cosa che ho potuto provare (e stavolta con successo)
è stato utilizzare tramite Access 2003 il DSN precedentemente creato. Ho
creato un nuovo MDB e gli ho collegato tabelle da un'origine dati ODBC, specificando
il DSN in questione ("AS400").
E' stato semplicissimo. In un attimo mi ha chiesto quali file visualizzare
(elencandomi tutti quelli disponibili nella libreria specificata all'interno
del DSN). Ho scelto quelli che volevo e sono stato in grado di visualizzarne
il contenuto senza alcun problema.
Questo mi fa capire che il DSN è corretto.
Ecco quindi che mi sono arenato.
In internet ho trovato, ad esempio:
- http://tinyurl.com/tk7nl
dal quale ho recuperato la sintassi per la sp_addlinkedserver e per la SELECT
successiva
- http://tinyurl.com/y5hh8k (SQL MAG)
segnalato anche da Luca Bianchi in un suo intervento, dovrebbe contenere
la procedura precisa per usare un AS/400 come server collegato. Sfortunatamente
bisogna essere abbonati alla rivista per accedere all'articolo e non è il
mio caso.
Spero proprio che qualcuno possa aiutarmi perché sono veramente fermo.
Considerate poi che non ho una VPN con il mio cliente, quindi per fare le
prove devo ogni volta andare da lui: mi piacerebbe andarci con la soluzione
definitiva.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
e riviste, informazioni dettagliate su come impostare come server collegato
un IBM AS/400, ma la ricerca ha avuto poca fortuna.
Come ambiente di prova, prima di andare a toccare il server del cliente dove
è installato SQL 2005, ho utilizzato il mio portatile, dove pure si trova
un server SQL 2005 (la versione Express with Advanced Services SP1), ovviamente
collegato nella LAN del cliente, in modo da vedere il server IBM.
Per poter collegarmi tramite ODBC al server IBM, sapevo che è indispensabile
installare anche "IBM Client Access", quindi l'ho installato anche se il
mio cliente ha una versione decisamente vecchia.
Fatta questa installazione ho utilizzato "Operation Manager" per definire
una connessione al server IBM del cliente: questo passo è necessario perché
va a definire sulla macchina locale (il mio portatile, in questo caso) un
nome identificativo con il quale essa può fare riferimento (tramite ad esempio
un driver ODBC) al server IBM e l'utente tramite il quale stabilire il collegamento
ad esso. Infatti, tramite "Operation Manager" ho creato questo "identificativo"
e l'ho chiamato SERVERIBM.
A questo punto ho definito un DSN di sistema, sfruttando i driver "Client
Access ODBC" installati insieme a "IBM Client Access": in questo DSN ho definito
la libreria alla quale fare riferimento (NSEUCOM01). Ho chiamato il DSN "AS400".
Fatto questo, tramite SSMS Express ho provato a definire un server collegato,
ma l'elenco dei provider è vuoto (ho provato più volte a farne il refresh).
Sinceramente non me lo aspettavo, visto che sul mio pc dell'ufficio, quell'elenco
è altamente popolato (anche se nel mio ufficio ho SQL 2005 Developer con
SP1).
Questo (purtroppo) mi ha fatto ripiegare sul T-SQL e la stored procedure
sp_addlinkedserver.
Per imparare ad utilizzare questa stored procedure ho ovviamente consultato
i BOL, ma ho anche fatto numerose ricerche in internet, senza purtroppo riuscire
a trovare qualcuno che avesse avuto il mio stesso problema.
Alla fine, dopo varie consultazioni online, quello che ho ottenuto è stata
la seguente istruzione SQL:
EXEC sp_addlinkedserver
@server = N'IBMSERVER',
@srvproduct = N'Microsoft OLE DB Provider for ODBC Driver',
@provider = N'MSDASQL',
@datasrc = N'AS400',
@provstr = N'UID=QPGMR;PWD=QPGMR'
Ci tengo a precisare che la predetta istruzione viene terminata correttamente
ed il server viene aggiunto tra quelli collegati. Tuttavia, se di seguito
provo a fare una banale SELECT, ottengo il messaggio di errore 7302, che
mi informa (vado a memoria) di non essere riuscito a creare un'istanza OLE
DB del provider MSDASQL.
Anche per la SELECT in questione ho provato diverse forme:
SELECT * FROM OPENQUERY(IBMSERVER, 'SELECT * FROM NSEUCOM01.ANCLI00F')
SELECT * FROM IBMSERVER.S443482A.NSEUCOM01.ANCLI00F
Ho anche provato a collegare il server specificando, come @provider, "IBMDA400"
al posto di "MSDASQL". Questo avrebbe dovuto permettere a SQL 2005 di utilizzare
il driver OLE DB di IBM (anche se ho letto in internet che è veramente poco
stabile).
Anche in questo caso ho ottenuto il messaggio 7302.
A questo punto, l'unica cosa che ho potuto provare (e stavolta con successo)
è stato utilizzare tramite Access 2003 il DSN precedentemente creato. Ho
creato un nuovo MDB e gli ho collegato tabelle da un'origine dati ODBC, specificando
il DSN in questione ("AS400").
E' stato semplicissimo. In un attimo mi ha chiesto quali file visualizzare
(elencandomi tutti quelli disponibili nella libreria specificata all'interno
del DSN). Ho scelto quelli che volevo e sono stato in grado di visualizzarne
il contenuto senza alcun problema.
Questo mi fa capire che il DSN è corretto.
Ecco quindi che mi sono arenato.
In internet ho trovato, ad esempio:
- http://tinyurl.com/tk7nl
dal quale ho recuperato la sintassi per la sp_addlinkedserver e per la SELECT
successiva
- http://tinyurl.com/y5hh8k (SQL MAG)
segnalato anche da Luca Bianchi in un suo intervento, dovrebbe contenere
la procedura precisa per usare un AS/400 come server collegato. Sfortunatamente
bisogna essere abbonati alla rivista per accedere all'articolo e non è il
mio caso.
Spero proprio che qualcuno possa aiutarmi perché sono veramente fermo.
Considerate poi che non ho una VPN con il mio cliente, quindi per fare le
prove devo ogni volta andare da lui: mi piacerebbe andarci con la soluzione
definitiva.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution