Erreur: "Fournisseur OLE DB" MSDASQL "pour le server lié" (null) "message returnné" Nom de la source de données introuvable … "

Si j'exécute la command suivante:

select * from OpenRowset ( 'MSDASQL', 'Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=C:\;', 'select top 10 * from C:\x.csv' ) 

… puis Microsoft SQL Server Management Studio répond avec:

[Microsoft] [Gestionnaire de pilotes ODBC] Nom de la source de données introuvable et aucun pilote par défaut spécifié.

Je cours Microsoft SQL Server 2008 R2 sur Win 7 x64. Je l'ai également essayé sur Windows Vista x32, même erreur.

Des questions:

  1. Quelqu'un at-il réussi à exécuter cette command sur Win 7 x64?
  2. Est-ce que l'un d'entre vous sait ce qui pourrait faire que la command T-SQL échoue comme ça?

Mise à jour 1:

Si vous obtenez une erreur qui mentionne "requêtes ad hoc", exécutez la procédure suivante pour l'éliminer:

 EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ad Hoc Dissortingbuted Queries', 1; GO RECONFIGURE; GO 

Mise à jour 2:

Il fonctionne sur une machine Win7 x64 prête à l'emploi, mais je n'arrive toujours pas à corriger cette erreur sur ma machine. Je vais aller avec "insert en vrac" (voir mes commentaires ci-dessous).

Je l'ai juste essayé sur x7 Win7 et l'ai fait fonctionner. Je pense qu'il y a quelques problèmes.

  1. Je crois que vous devez append un espace entre *.txt; et *.csv
  2. N'incluez pas le path avec le nom de file

Cela a fonctionné:

 select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=c:\;', 'select top 10 * from x.csv') 

Solution: Je viens de me battre avec ce problème pendant plusieurs heures sur une machine Win7 x64, et il est si difficile de find une bonne réponse en ligne que je pensais que je consortingbuerais tardivement à ce fil.

Sur ma machine (Win7, x64, SQL Server 2008 R2), devises d'administration> Sources de données (ODBC)> Pilotes, ne montre aucun pilote appelé "Microsoft Text Driver". Mais il y a un pilote étiqueté "Microsoft Access Text Driver (* .txt, * .csv)"

J'ai été en mesure de changer le nom du pilote dans le code similaire à l'interrogateur d'origine, y compris les parenthèses (* .txt, * .csv) avec une virgule et un espace, pas un point-virgule. Et ça a marché.

 select * from OpenRowset ( 'MSDASQL', 'Driver={Microsoft Access Text Driver (*.txt, *.csv)};DefaultDir=C:\;', 'select top 10 * from C:\x.csv' ) 

Notez que la syntaxe dans la spécification du lecteur doit être exactement la même. Je peux témoigner de cela parce que j'ai traversé plusieurs fausses itérations.