Importer un fichier ACCESS dans SQL SERVER

Importer un fichier ACCESS dans SQL SERVER - SQL/NoSQL - Programmation

Marsh Posté le 16-04-2013 à 13:25:30    

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

Reply

Marsh Posté le 16-04-2013 à 13:25:30   

Reply

Marsh Posté le 16-04-2013 à 14:12:05    

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 ?

Reply

Marsh Posté le 16-04-2013 à 14:24:00    

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

Reply

Marsh Posté le 16-04-2013 à 15:09:44    

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
Reply

Marsh Posté le 17-05-2013 à 15:27:07    

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é.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed