Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
864 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Importer un fichier ACCESS dans SQL SERVER

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Importer un fichier ACCESS dans SQL SERVER

n°2186066
ledzep2
Posté le 16-04-2013 à 13:25:30  profilanswer
 

Bonjour à tous,
Tout est dans le titre...
J'ai un fichier ACCESS (nom = guid) avec une table dbo_Ps, qui contient 5 colonnes. Je veux l'importer directement dans SQL SERVER.
J'ai d'abord essayé dans SQL SERVER avec la requête suivante :

Code :
  1. INSERT INTO testage SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source=C:\App_TempFiles\cbc622a8-695c-4867-a26c-de18618cf642;')...[dbo_Ps]

.
Auparavant j'ai activé le support de OPENROWSET and OPENDATASOURCE dans SQL SERVER. J'ai aussi installé Office 2010 Pro 64 bits.
 
Au final le message d'erreur que j'obtiens est :

Code :
  1. Msg*7399, Niveau*16, État*1, Ligne*1
  2. Le fournisseur OLE DB "Microsoft.ACE.OLEDB.12.0" du serveur lié "(null)" a rapporté une erreur. Accès refusé.
  3. Msg*7301, Niveau*16, État*2, Ligne*1
  4. Impossible d'obtenir l'interface requise ("IID_IDBCreateCommand" ) à partir du fournisseur OLE DB "Microsoft.ACE.OLEDB.12.0" du serveur lié "(null)".


 :cry:  
Qu'ai je oublié ?
 
merci

mood
Publicité
Posté le 16-04-2013 à 13:25:30  profilanswer
 

n°2186075
deliriumtr​emens
sic transit intestinal...
Posté le 16-04-2013 à 14:12:05  profilanswer
 

Tu as SSMS (Sql Server Management Studio) ?  
 
Si oui, un click droit sur ta base de destination, tasks -> import Data... et tu as un simplissime wizard qui te permettra d'importer des données depuis Access ou bien d'autres sources de données.
 
Tu peux aussi sauvegarder un package SSIS contenant la manoeuvre si elle doit être répétée.
 
Suffisant, ou tu dois absolument passer par du code ?

n°2186076
ledzep2
Posté le 16-04-2013 à 14:24:00  profilanswer
 

Salut, merci pour la réponse.
En fait, je dois passer par du code. Je suis en VB.NET sur de l'ASP.NET. Je dois concevoir un outil d'import de fichier ACCESS. Je voulais avant tout tester la commande depuis SSMS et ensuite passer au code.
J'ai essayé ça :

Code :
  1. Dim cn As ADODB.Connection
  2.             Dim strSQL As String
  3.             cn = New ADODB.Connection
  4.             cn.Open("Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;" & _
  5.                 "Initial Catalog=N;User ID=U;Password=P" )
  6.             'Import by using OPENDATASOURCE.
  7.             strSQL = "SELECT * INTO testage FROM " & _
  8.                 "OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', " & _
  9.                 "'Data Source=C:\App_TempFiles\cbc622a8-695c-4867-a26c-de18618cf642;'" & _
  10.                 " )...[dbo_Ps]"
  11.             cn.Execute(strSQL)
  12.             cn.Close()
  13.             cn = Nothing


 
Mais j'obtiens cette erreur :

Code :
  1. L'accès d'égal à égal au fournisseur OLE DB 'Microsoft.ACE.OLEDB.12.0' a été refusé. Vous devez accéder à ce fournisseur par le biais d'un serveur lié.
  2. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
  3. Exception Details: System.Runtime.InteropServices.COMException: L'accès d'égal à égal au fournisseur OLE DB 'Microsoft.ACE.OLEDB.12.0' a été refusé. Vous devez accéder à ce fournisseur par le biais d'un serveur lié.


 
Du coup, je tourne en rond

n°2186091
deliriumtr​emens
sic transit intestinal...
Posté le 16-04-2013 à 15:09:44  profilanswer
 

Hmmm, a priori il y a des choses à configurer dans Sql Server :
 
Soit la création d'un serveur lié  : stackoverflow 1 ou msdn
 
Soit la permission d'utiliser des "ad hoc distributed queries" : stackoverflow 2 ou msdn


Message édité par deliriumtremens le 16-04-2013 à 15:12:39
n°2190634
ledzep2
Posté le 17-05-2013 à 15:27:07  profilanswer
 

Ok, j'ai réussi à faire marcher la commande depuis un SSMS executé en mode admin.
Par contre lorsque je mets cette commande dans une procédure stockée et que je l'appelle depuis mon code VB, j'ai cette erreur :

Code :
  1. "L'accès d'égal à égal au fournisseur OLE DB 'Microsoft.ACE.OLEDB.12.0' a été refusé. Vous devez accéder à ce fournisseur par le biais d'un serveur lié. "


 
Pourtant j'ai fait ceci :

Code :
  1. EXEC sp_configure 'show advanced options', 1
  2. GO
  3. RECONFIGURE
  4. GO
  5. EXEC sp_configure 'Ad Hoc Distributed Queries', 1
  6. RECONFIGURE
  7. GO
  8. USE [master]
  9. GO
  10. EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
  11. GO
  12. EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
  13. GO


 
Du coup, je suis bloqué.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Importer un fichier ACCESS dans SQL SERVER

 

Sujets relatifs
Remplacer un mot dans un fichierOrdonner des données dans un fichier txt
Macro importer des fichiers txt d'un dossier dans des fichiers excelMacro pour Importer fichier txt spécifique [résolu]
lecture d'un fichier java .niodécouper une chaine de caractères d'un fichier en java
Upload de fichier + gestion comptes utilisateursPython et XBMC : récupérer le fichier en cours de lecture
[SQL] Requete date 
Plus de sujets relatifs à : Importer un fichier ACCESS dans SQL SERVER


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR