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

MS SQL Server Discussion :

Problémes de requêtes sur serveur lié excel


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut Problémes de requêtes sur serveur lié excel
    Bonjour,
    je developpe une applications (en pseudo VB.net) avec une base de données sous SQL serveur 2008.
    J'ai un fichier excel (.xlsx) que j'ai défini comme serveur lié afin de facilité son utilisation.
    Sous SQL server j'exploite, sans problèmes, mon fichier à l'aide de requêtes telles que celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM mon_serveur_lié...ma_table
    Cependant sous mon application je me connecte à mon serveur et éffectue le script suivant :

    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
    Dim Requete as string;
    Dim MyCommand as System.Data.OLEDB.OLEDBCommand;
    Dim MyReader As System.Data.OLEDB.OLEDBDataReader;
    Dim OLEDBConnectString as string ;
    Dim MyOLEDBConnection As System.Data.OleDb.OleDbConnection;
    Dim Index as Integer;
     
    OLEDBConnectString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Preparateur.xlsx ;Extended Properties="+StringChar(34)+"Excel 12.0 Xml;HDR=YES"+StringChar(34)+";";
    MyOLEDBConnection= New System.Data.OleDb.OleDbConnection(OLEDBConnectString);
    MyOLEDBConnection.Open();
     
    'j'ai essayé les requêtes suivantes mais je reste bloqué lors de mon ExecuteReader
    Requete="SELECT count (nom_colonne) FROM mon_serveur_lié...ma_table" ;
    'ou
    Requete="SELECT * FROM openquery (mon_serveur_lié , 'SELECT count (nom_colonne) FROM ma_table')" ;
    'ou la même chose mais avec la requête opendatasource
     
    MyCommand=MyOLEDBConnection.CreateCommand();
    MyCommand.CommandText = Requete;
    MyReader = MyCommand.ExecuteReader();
    MyReader.Read();
    Index=MyReader.Getvalue(0);
     
    MyReader.close();
    MyOLEDBConnection.Close();
    Je ne sais pas pourquoi je n'arrive pa à executer mes requête depuis mon application alors que sous SQL server elles marchent...
    Pourquoi lorsqu'il ne s'agit pas d'un serveur lié il n'y a pas de problème...

    que dois je faire ??!

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Je vois que vous vous connectez à votre fichier Excel dans la chaîne de connexion ... mais ne faut il pas plutôt vous connecter au serveur SQL qui héberge votre serveur lié ?

    Une fois connecté à ce serveur vous pourrez exécutez vos requêtes du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count (nom_colonne) FROM mon_serveur_lié...ma_table
    ++

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    Re bonjour à tous et merci pour la réponse de mikedavem.
    Je me connecte donc à ma base correctement mais mon problème persiste.

    Je précise encore que j'arrive à faire un SELECT sur mon serveur lié depuis SQL Server mais pas depuis mon application.

    Voici mon code simplifié qui plante lors de la requete SELECT.

    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
    Dim OLEDBConnectString as string ;
    Dim MyOLEDBConnection As System.Data.OleDb.OleDbConnection;
    Dim MyCommand as System.Data.OLEDB.OLEDBCommand;
    Dim MyReader As System.Data.OLEDB.OLEDBDataReader;
    dim requete as string;
     
    OLEDBConnectString="Provider=SQLNCLI;Password=##;Persist Security Info=True;User ID=sa;Initial Catalog= Suivi ;server=IAS-1; failover partner=IAS-2;";
    MyOLEDBConnection= New System.Data.OleDb.OleDbConnection(OLEDBConnectString);
    MyOLEDBConnection.Open();
     
    requete="select * from Fichier...Feuille1$";
    MyCommand=MyOLEDBConnection.CreateCommand();
    MyCommand.CommandText = Requete;
    MyReader = MyCommand.ExecuteReader();
    MyReader.Read();
     
    MyReader.close();
    MyOLEDBConnection.Close();
    Voici le message d'erreur que j'observe dans la console:
    Microsoft SQL Native Client: Impossible d'initialiser l'objet de la source de données du fournisseur OLE DB "Microsoft.ACE.OLEDB.12.0" du serveur lié "Fichier".
    Le fournisseur OLE DB "Microsoft.ACE.OLEDB.12.0" du serveur lié "Fichier" a retourné le message "Le moteur de la base de données Microsoft Office Access ne peut pas ouvrir ou écrire sur le fichier «*C:\fichier.xlsx*». Il est déjà ouvert en mode exclusif par un autre utilisateur, ou vous devez avoir l'autorisation de visualiser et d'écrire sur ses données.".
    Mon problème semble donc venir de l'authentification de mon application.

    Voici ce que je fais lors de la création de mon serveur lié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Fichier',@useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
    Comment supprimer l'authentification à mon serveur lié?

    Merci par avance pour votre aide.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Par défaut
    Essaie d'utiliser la version appropriée de SQL Native client en précisant dans ta chaîne de connexion "Provider=SQLNCLI10.1", car il s'agit de SQL Server 2008.

    En ce qui concerne l'utilisation d'Excel via un serveur lié, je te déconseille ce genre de pratique. Importe tes données dans une table SQL normalisée avec Microsoft Integration Services.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    Merci mais je ne suis que sur SQL serveur 2005.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    Voici les paramètres d'autorisation à mon serveur lié.


    Que dois je mettre?

    Merci par avance.

Discussions similaires

  1. Problème export requête sur excel
    Par mbar dans le forum VBA Access
    Réponses: 5
    Dernier message: 20/02/2009, 12h18
  2. suite au problème de requête sur plusieur table
    Par michelGProuq dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/07/2006, 16h19
  3. [SQL-SERVER 2000] Problème de requête sur une seule ligne
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 16h54
  4. [MySQL] Problème de requête sur des dates
    Par dahu29 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2006, 13h08
  5. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06

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