bonjour,
je souhaite récupérer le resultat des plusieurs connexions à des
bases de données SQL.
exemple: Actuellement j'ai un tableau qui contient 4 entrées :
$Instances[0]; # Serveur1instanceA
$Instances[1]; # Serveur2instanceB
$Instances[2]; # Serveur3instanceC
$Instances[3]; # Serveur4instanceD
Je boucle dessus pour établir une connexion et récupérer un info.
For ($i=0; $i<$#Instances; $i++) {
$SQLDSN = "DRIVER=SQL
Server;SERVER=$Instances[$i];UID=$username;PWD=$password;DATABASE=msdb";
$dbh = DBI->connect("DBI:ODBC:$SQLDSN", "$username", "$password" );
ETC ETC ....
}
Mais le probleme est que si la connexion échoue (pas de réseau ou
autre banalité), SQL retourne une erreur et donc le script s'arrète
et je perds le bénéfice des autres résultats.
-Comment contourner ça...?
bonjour,
je souhaite récupérer le resultat des plusieurs connexions à des
bases de données SQL.
exemple: Actuellement j'ai un tableau qui contient 4 entrées :
$Instances[0]; # Serveur1instanceA
$Instances[1]; # Serveur2instanceB
$Instances[2]; # Serveur3instanceC
$Instances[3]; # Serveur4instanceD
Je boucle dessus pour établir une connexion et récupérer un info.
For ($i=0; $i<$#Instances; $i++) {
$SQLDSN = "DRIVER=SQL
Server;SERVER=$Instances[$i];UID=$username;PWD=$password;DATABASE=msdb";
$dbh = DBI->connect("DBI:ODBC:$SQLDSN", "$username", "$password" );
ETC ETC ....
}
Mais le probleme est que si la connexion échoue (pas de réseau ou
autre banalité), SQL retourne une erreur et donc le script s'arrète
et je perds le bénéfice des autres résultats.
-Comment contourner ça...?
bonjour,
je souhaite récupérer le resultat des plusieurs connexions à des
bases de données SQL.
exemple: Actuellement j'ai un tableau qui contient 4 entrées :
$Instances[0]; # Serveur1instanceA
$Instances[1]; # Serveur2instanceB
$Instances[2]; # Serveur3instanceC
$Instances[3]; # Serveur4instanceD
Je boucle dessus pour établir une connexion et récupérer un info.
For ($i=0; $i<$#Instances; $i++) {
$SQLDSN = "DRIVER=SQL
Server;SERVER=$Instances[$i];UID=$username;PWD=$password;DATABASE=msdb";
$dbh = DBI->connect("DBI:ODBC:$SQLDSN", "$username", "$password" );
ETC ETC ....
}
Mais le probleme est que si la connexion échoue (pas de réseau ou
autre banalité), SQL retourne une erreur et donc le script s'arrète
et je perds le bénéfice des autres résultats.
-Comment contourner ça...?
Pourquoi « et donc » ? Normalement c'est à toi, programmeur, de dir e si on
arrête ou pas, non ? Je ne me souviens pas avoir eu mes scripts qui
faisaient d'eux-même un die ou un exit sans que je le leur dise...
Pourquoi « et donc » ? Normalement c'est à toi, programmeur, de dir e si on
arrête ou pas, non ? Je ne me souviens pas avoir eu mes scripts qui
faisaient d'eux-même un die ou un exit sans que je le leur dise...
Pourquoi « et donc » ? Normalement c'est à toi, programmeur, de dir e si on
arrête ou pas, non ? Je ne me souviens pas avoir eu mes scripts qui
faisaient d'eux-même un die ou un exit sans que je le leur dise...
Pourquoi « et donc » ? Normalement c'est à toi, programmeur, de dire si on
arrête ou pas, non ? Je ne me souviens pas avoir eu mes scripts qui
faisaient d'eux-même un die ou un exit sans que je le leur dise...
Etrangement Si .. ! je ne comprends pas moi non plus.
Dans ma boucle, je fais une tentative de connexion avec un 'DBI ->
connect' puis en retour le '$DBI::errstr' avorte le script.. Peut-etre
une erreur de type 'erreur fatale' . ou 'ché pa koi' ?
Pourquoi « et donc » ? Normalement c'est à toi, programmeur, de dire si on
arrête ou pas, non ? Je ne me souviens pas avoir eu mes scripts qui
faisaient d'eux-même un die ou un exit sans que je le leur dise...
Etrangement Si .. ! je ne comprends pas moi non plus.
Dans ma boucle, je fais une tentative de connexion avec un 'DBI ->
connect' puis en retour le '$DBI::errstr' avorte le script.. Peut-etre
une erreur de type 'erreur fatale' . ou 'ché pa koi' ?
Pourquoi « et donc » ? Normalement c'est à toi, programmeur, de dire si on
arrête ou pas, non ? Je ne me souviens pas avoir eu mes scripts qui
faisaient d'eux-même un die ou un exit sans que je le leur dise...
Etrangement Si .. ! je ne comprends pas moi non plus.
Dans ma boucle, je fais une tentative de connexion avec un 'DBI ->
connect' puis en retour le '$DBI::errstr' avorte le script.. Peut-etre
une erreur de type 'erreur fatale' . ou 'ché pa koi' ?
Oui enfin là c'est vraiment étrange... Tu ne pourrais pas nous copier ton
code après le connect ? Plus exactement, si tu commentes TOUT le code q ui
suit le connect dans ta boucle, est-ce que ça quitte quand même ?
Oui enfin là c'est vraiment étrange... Tu ne pourrais pas nous copier ton
code après le connect ? Plus exactement, si tu commentes TOUT le code q ui
suit le connect dans ta boucle, est-ce que ça quitte quand même ?
Oui enfin là c'est vraiment étrange... Tu ne pourrais pas nous copier ton
code après le connect ? Plus exactement, si tu commentes TOUT le code q ui
suit le connect dans ta boucle, est-ce que ça quitte quand même ?
Mais le probleme est que si la connexion échoue (pas de réseau ou
autre banalité), SQL retourne une erreur et donc le script s'arrète
et je perds le bénéfice des autres résultats.
-Comment contourner ça...?
Mais le probleme est que si la connexion échoue (pas de réseau ou
autre banalité), SQL retourne une erreur et donc le script s'arrète
et je perds le bénéfice des autres résultats.
-Comment contourner ça...?
Mais le probleme est que si la connexion échoue (pas de réseau ou
autre banalité), SQL retourne une erreur et donc le script s'arrète
et je perds le bénéfice des autres résultats.
-Comment contourner ça...?
Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous l es
cas d'erreur.
Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous l es
cas d'erreur.
Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous l es
cas d'erreur.
Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous les
cas d'erreur.
Mon script perl programme quitte quand meme, avec ou sans test de
retour.
Car plutot que se dire je tente de ne connecter, puis je continu si j'y
arrive ou non, en fait il quitte quand il échoue.
Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous les
cas d'erreur.
Mon script perl programme quitte quand meme, avec ou sans test de
retour.
Car plutot que se dire je tente de ne connecter, puis je continu si j'y
arrive ou non, en fait il quitte quand il échoue.
Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous les
cas d'erreur.
Mon script perl programme quitte quand meme, avec ou sans test de
retour.
Car plutot que se dire je tente de ne connecter, puis je continu si j'y
arrive ou non, en fait il quitte quand il échoue.
À (at) 14 Jun 2006 06:26:50 -0700,
"Alextophi" écrivait (wrote):Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous les
cas d'erreur.
Mon script perl programme quitte quand meme, avec ou sans test de
retour.
Car plutot que se dire je tente de ne connecter, puis je continu si j'y
arrive ou non, en fait il quitte quand il échoue.
Avec quel message d'erreur ?
La méthode 'connect' de DBI peut soit échouer si elle n'arrive pas à
se connecter (c'est le cas que j'évoquais) soit mourir (par exemple si
le DBD demandé n'existe pas). Ce n'est pas le même type d'erreur. Dans
le premier cas, c'est une erreur externe au script alors que, dans le
second cas, c'est une erreur interne (d'où l'appel à 'die').
Pour capter le 'die', vous pouvez toujours utiliser :
eval {
#... code de tentative de connexion
}
if ($@) {
print "Err: $@n";
}
À (at) 14 Jun 2006 06:26:50 -0700,
"Alextophi" <ext.astek.brakha@sncf.fr> écrivait (wrote):
Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous les
cas d'erreur.
Mon script perl programme quitte quand meme, avec ou sans test de
retour.
Car plutot que se dire je tente de ne connecter, puis je continu si j'y
arrive ou non, en fait il quitte quand il échoue.
Avec quel message d'erreur ?
La méthode 'connect' de DBI peut soit échouer si elle n'arrive pas à
se connecter (c'est le cas que j'évoquais) soit mourir (par exemple si
le DBD demandé n'existe pas). Ce n'est pas le même type d'erreur. Dans
le premier cas, c'est une erreur externe au script alors que, dans le
second cas, c'est une erreur interne (d'où l'appel à 'die').
Pour capter le 'die', vous pouvez toujours utiliser :
eval {
#... code de tentative de connexion
}
if ($@) {
print "Err: $@n";
}
À (at) 14 Jun 2006 06:26:50 -0700,
"Alextophi" écrivait (wrote):Il suffit de tester la valeur de $dbh après la tentative de
connexion. Si c'est une valeur indéfinie (undef), c'est que la
connexion ne s'est pas déroulée et que le message d'erreur associé est
dans $DBI::errstr (et aussi $DBI::err).
De manière générale, il faut toujours tester les valeurs de retour des
appels externes (système et autres bibliothèques) pour gérer tous les
cas d'erreur.
Mon script perl programme quitte quand meme, avec ou sans test de
retour.
Car plutot que se dire je tente de ne connecter, puis je continu si j'y
arrive ou non, en fait il quitte quand il échoue.
Avec quel message d'erreur ?
La méthode 'connect' de DBI peut soit échouer si elle n'arrive pas à
se connecter (c'est le cas que j'évoquais) soit mourir (par exemple si
le DBD demandé n'existe pas). Ce n'est pas le même type d'erreur. Dans
le premier cas, c'est une erreur externe au script alors que, dans le
second cas, c'est une erreur interne (d'où l'appel à 'die').
Pour capter le 'die', vous pouvez toujours utiliser :
eval {
#... code de tentative de connexion
}
if ($@) {
print "Err: $@n";
}
Toutefois il me semble qu'il y a ';' derrière le bloc d'évaluation.
eval {
#... code de tentative de connexion
};
Toutefois il me semble qu'il y a ';' derrière le bloc d'évaluation.
eval {
#... code de tentative de connexion
};
Toutefois il me semble qu'il y a ';' derrière le bloc d'évaluation.
eval {
#... code de tentative de connexion
};
À (at) Wed, 14 Jun 2006 17:27:29 +0200,
Jean-Charles Gibier
écrivait (wrote):Toutefois il me semble qu'il y a ';' derrière le bloc d'évaluation.
eval {
#... code de tentative de connexion
};
Exact ! Le ';' est indispensable pour ne pas avoir d'erreur lors de la
compilation.
À (at) Wed, 14 Jun 2006 17:27:29 +0200,
Jean-Charles Gibier
<this_is_not_my_mail_adress_please_check_your_favorite@search.engine.invalid>
écrivait (wrote):
Toutefois il me semble qu'il y a ';' derrière le bloc d'évaluation.
eval {
#... code de tentative de connexion
};
Exact ! Le ';' est indispensable pour ne pas avoir d'erreur lors de la
compilation.
À (at) Wed, 14 Jun 2006 17:27:29 +0200,
Jean-Charles Gibier
écrivait (wrote):Toutefois il me semble qu'il y a ';' derrière le bloc d'évaluation.
eval {
#... code de tentative de connexion
};
Exact ! Le ';' est indispensable pour ne pas avoir d'erreur lors de la
compilation.