IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SGBD Perl Discussion :

[debutant perl]PERL&MSSQL


Sujet :

SGBD Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut [debutant perl]PERL&MSSQL
    bonjour tt le monde

    je chercher des informations pour faire des requetes pour mssql d'un fichier perl .... help !!

    j'ai chercher sur mon amis google ,, mais j'ai rien trouver d'interressant
    si quelqu'un avais des liens , des scripts ca serai cool

    merci a ce qui ce penche sur mon pb
    ++

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Réponse de Normand : ça dépend ce que tu veux faire.

    En utilisant SQL-DMO, ça peut donner ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    use strict;
    use warnings;
    use Win32::OLE;
     
     
    my $server = 'localhost';
    my $dbname = 'master';
     
    my $objSQLServer = Win32::OLE->new('SQLDMO.SQLServer')
    	or die "$!";
    $objSQLServer->Connect($server,'sa','password');
     
     
    my $objDB = $objSQLServer->Databases($dbname) or die "$!";
    my $size = $objDB->{'Size'};
    print "Total Size of Data File + Transaction Log of DB $dbname : $size MB";
    Ou sinon, en utilisant DBI et DBD::ADO, ça donne quelque chose comme ça (ce script récupère les taux de remplissage des bases de données de plusieurs serveurs, hors base system et exemple):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    use strict;
    use warnings;
    use DBI;
     
    # en clé : les hostnames, en valeur : les mots de passe du compte sa
    my %server = (	'server1' 	=> 'sa_password',
    		          'server2'	 => 'sa_password',
    		          'server3'	 => 'sa_password',
    		          'server4'	 => 'sa_password');
     
    my $dbd = 'ADO';
    my $user = 'sa';
    my $database = 'master';
     
     
    foreach my $key (sort keys(%server)) {
    	my $dsn = "Driver={SQL Server};Server=$key;Database=$database;Uid=$user;Pwd=$server{$key};" ;
    	my $dbh = DBI->connect("dbi:$dbd:$dsn")
    		or die "Connexion au serveur SQL $key distant impossible: $DBI::errstr";
    	my $sth = $dbh->prepare(qq{select name from master.dbo.sysdatabases});
    	$sth->execute;
    	print "\n\nTaux de remplissage des bases sur ", uc $key,":\n";
     
    	while ( my @row = $sth->fetchrow_array ) {
    		my $db = shift(@row);
    		next if ($db =~ /(Northwind|pubs|master|msdb|model|tempdb)/i);
     
    		my $sth2 = $dbh->prepare(qq{exec sp_executesql N'use "$db" EXEC sp_spaceused'});
    		$sth2->execute;
    		while ( my @row2 = $sth2->fetchrow_array ) {
    			my ($base,$size,$free) = @row2;
    			$size =~ s/\sMB//;
    			$free =~ s/\sMB//;
    			$free = 100 - (($free/$size)*100);
    			print "\t$base\t$free %\n";
    		}
    	}
    	continue {}
    	$dbh->disconnect;
    }
    --
    Kuzco
    DBA MSSQL

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    en faite ,, je suis sur une plateforme win2K3 avec iis et je dois juste faire un update sur une table

    mais je pense pas que tt les modules sont bien installer : |

  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    j'ai une erreur sur cette ligne il me dis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $objSQLServer = Win32::OLE->new('SQLDMO','SQLServer') or die "$!";

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    died at test.pl ligne 10

    [/code]

  5. #5
    Invité
    Invité(e)
    Par défaut
    Alors utilise plutôt DBI.
    Il faut installer DBI et DBD::ADO (ou DBD::ODBC).

    Puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    use strict;
    use warnings;
    use DBI;
     
    my ($server,$database,$user,$pwd) = qw(host dbname sa password);
    my $dsn = "Driver={SQL Server};Server=$server;Database=$database;Uid=$user;Pwd=$pwd;";
    my $dbh = DBI->connect("dbi:ADO:$dsn");
     
    if (defined($dbh)) {
    	$dbh->do("UPDATE your_table SET foo = foo + 1")
    		or print "Erreur :$!";
    	$dbh->disconnect;
    }

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    mouarf j ai pas DBI dans mon c:\perl\lib ,,

    tu sais ou ca peux ce trouver ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    je vien de decouvrir ppm

    magique ce truc

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bah c'est ce que j'allais te dire : ppm install DBI

    Puis ppm install DBD-ADO

  9. #9
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    bon ca avance bien

    mais j'ai un pb de connexion comprends pas

    j ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    use strict; 
    use warnings; 
    use DBI; 
     
    $server = 'IP ..'
    $database = 'base'
    $user = 'sa'
    $pwd = 'pass'
     
    my ($server,$database,$user,$pwd) = qw(host dbname sa password); 
    my $dsn = "Driver={SQL Server};Server=$server;Database=$database;Uid=$user;Pwd=$pwd;"; 
    my $dbh = DBI->connect("dbi:ADO:$dsn");

    et j obient comme msg d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Package    : DBD::ADO::dr
      Filename   : c:/Perl/site/lib/DBD/ADO.pm
      Line       : 158
      Last error : -2147467259
     
    OLE exception from "Microsoft OLE DB Provider for ODBC Drivers":
     
    [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or
    access denied.
    il ne faut pas modifier quelque chose dans cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my ($server,$database,$user,$pwd) = qw(host dbname sa password);

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Citation Envoyé par hash92
    je vien de decouvrir ppm

    magique ce truc
    Pas besoin d'aller sur d'autre forum. Y a déjà une Faq Perl ici avec de la doc. Confere ma signature, tout est expliqué (installations des modules, etc)

  11. #11
    Invité
    Invité(e)
    Par défaut
    Tu peux la passer comme ça aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($server,$database,$user,$pwd) = ('host','dbname','sa','password');
    N'oublie pas non plus les ; à la fin de chaque ligne (notamment celles de déclarations de tes variables)

  12. #12
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    oui dans mon code j'ai bien mis les " ; " mais j ai tj le probleme de connection : |


    sinon pour la fac sry ,, mais mon besoin avais evoluer depuis que j'ai ete voir la fac la premiere foi today

  13. #13
    Invité
    Invité(e)
    Par défaut
    T'as vérifié le mode de connexion à SQL ? Windows ou mixte ?

  14. #14
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    eu c ou qu'on verifie ca ?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Dans les propriété du serveur SQL.

  16. #16
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    bon niveau connection j'ai reponter l'affaire au pres d'un admin de ma boite (y a peux etre des securiters particulieres) ,,

    maitenant j'ai tj un petit bug qui s'affiche dans la console cmd pour ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #!c:\perl\bin\perl.exe
    use CGI;
    use warnings;
    use DBI;
    use STRICT;
     
    my($server);
    my($databas);
    my($user);
    my($pwd);
     
    $server ='209.48.122.122';
    $database ='srd_class';
    $user='sa';
    $pwd ='pass';
     
    my($server,$database,$user,$pwd) = qw(host dbname sa password);
    my $dsn = "Driver={SQL Server};Server=$server;Database=$database;Uid=$user;Pwd=$pwd;";
    my $dbh = DBI->connect("dbi:ADO:$dsn");
    et j'ai le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "My" variable $server masks earlier declaration in same scope at file.pl at ligne 17
    "My" variable $user masks earlier declaration in same scope at file.pl at ligne 17
    "My" variable $pwd masks earlier declaration in same scope at file.pl at ligne 17
    ta une idee de l erreur ?

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    Si tu as cette erreur c'est que t'est variables , $server, $user et $pwd sont déjà déclaré dans ton script



    Essaie sa



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl
    use CGI; 
    use warnings; 
    use DBI; 
    use STRICT; 
     
    my $server ='209.48.122.122'; 
    my $database ='srd_class'; 
    my $user='sa'; 
    my $pwd ='pass'; 
     
    # my($server,$database,$user,$pwd) = qw(host dbname sa password); ???? sert a quoi ????
    my $dsn = "Driver={SQL Server};Server=$server;Database=$database;Uid=$user;Pwd=$pwd;"; 
    my $dbh = DBI->connect("dbi:ADO:$dsn");

  18. #18
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    non C bon j ai plus ses erreur la

    # my($server,$database,$user,$pwd) = qw(host dbname sa password); ???? sert a quoi ????
    je sais pas ,, ct kuzco qui ma donner ca ,, mais je sais pas trop a quoi ca peux servire

  19. #19
    Invité
    Invité(e)
    Par défaut
    Tu ne peux pas déclarer 2 fois les variables $server,$database,$user,$pwd

    Soit tu les déclare unitairement, soit dans un contexte de liste, mais pas les 2...

Discussions similaires

  1. Super lien pour debutant en perl
    Par gool42 dans le forum Langage
    Réponses: 1
    Dernier message: 04/01/2007, 14h59
  2. aide pour debutant en perl
    Par donny dans le forum Langage
    Réponses: 3
    Dernier message: 30/08/2006, 18h13
  3. [Debutant] Module Perl
    Par Luffy Duck dans le forum Modules
    Réponses: 4
    Dernier message: 06/04/2006, 17h25
  4. [langage] Question débutant compilation PERL
    Par sebbyoguard dans le forum Langage
    Réponses: 5
    Dernier message: 04/09/2004, 19h39
  5. [langage] Renseignement pour débuter sur perl
    Par freeshman dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 23h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo