2010-08-26 4 views
0

Je suis très très coincé ici, l'aide est grandement appréciée. Qu'est-ce que j'essaie de faire?Le fournisseur OLE DB "MSDASQL" pour le serveur lié "(null)" a signalé une erreur

Il y a un ASP page (ASP classic) avec un téléchargement CSV qui donne l'erreur suivante:

Microsoft OLE DB Provider for SQL Server error '80040e14' 

The OLE DB provider "MSDASQL" for linked server "(null)" reported an error. The provider did not give any information about the error. 

/ùùù.stocklist.be/importCSVProcess.asp, line 86 

J'ai créé deux serveurs liés:

EXEC master.dbo.sp_addlinkedserver 
      @server = N'txtsrv' 
     , @srvproduct=N'Jet 4.0' 
     , @provider=N'Microsoft Text Driver (*.txt; *.csv)' 
     , @datasrc=N'D:\WEBSITES\ùùù.stocklist.be\csv\upload' 
     , @provstr=N'Text' 

et

  EXEC sp_addlinkedserver 
    @server = 'Server1', 
    @srvproduct = '', 
    @provider = 'MSDASQL', 
    @datasrc = ' 

'

Quand je remplace MSDASQL par txtsrv dans la requête suivante je reçois cette erreur:

The OLE DB provider "txtsrv" has not been registered. 

Ceci est le code où l'insert est fait:

If upl.Form("rdbType") = "lot" Then 
      updFileNameSQL ="insert into cos_lot(lot_vin) " & _ 
        "SELECT vin " & _ 
        "FROM OPENROWSET " & _ 
        "('MSDASQL', " & _ 
        "'Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & sServerPath & ";', " & _ 
        "'SELECT vin from " & UplFileName & "') " & _ 
        "where not vin IS NULL AND vin collate SQL_Latin1_General_CP1_CI_AS not in (select lot_vin from cos_lot) " 


    Set updCmd = Server.CreateObject("ADODB.Command") 
     updCmd.ActiveConnection = MM_COS_STRING 
     updCmd.CommandText = updFileNameSQL 
     updCmd.Execute 
ElseIf upl.Form("rdbType") = "premie" Then 
    updFileNameSQL ="INSERT INTO [ùùùSTOCKLIST].[dbo].[COS_ANNEX] " & _ 
         "([annex_type] " & _ 
         ",[annex_chassisnr] " & _ 
         ",[annex_datum] " & _ 
         ",[annex_userid] " & _ 
         ",[annex_stockid] " & _ 
         ",[annex_commentNL] " & _ 
         ",[annex_commentFR] " & _ 
         ",[annex_premie] " & _ 
         ",[annex_premie_type] " & _ 
         ",[annex_consignatie] " & _ 
         ",[annex_eindeconsignatie] " & _ 
         ",[annex_online] " & _ 
         ",[annex_onlinefrom] " & _ 
         ",[annex_onlineto] " & _ 
         ",[annex_libelle]) " & _ 
         "SELECT 2 " & _ 
         ",[VIN] " & _ 
         ",Getdate() " & _ 
         ", " & Session("user_id") & " " & _ 
         ",[STOCK] " & _ 
         ",'' " & _ 
         ",'' " & _ 
         ",Replace([PREMIE],',','.') " & _ 
         ",'E' " & _ 
         ",Null " & _ 
         ",Null " & _ 
         ",1 " & _ 
         ",cast([ONLINEFROM] as smalldatetime) " & _ 
         ",cast([ONLINETO] as smalldatetime) " & _ 
         ",[TYPE] " & _ 
         "FROM OPENROWSET " & _ 
         "('MSDASQL', " & _ 
         "'Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & sServerPath & ";', " & _ 
         "'SELECT vin,stock,type,premie,onlinefrom,onlineto from " & UplFileName & "') " & _ 
         "WHERE NOT VIN IS NULL " 

    Set updCmd = Server.CreateObject("ADODB.Command") 
     updCmd.ActiveConnection = MM_COS_STRING 
     updCmd.CommandText = updFileNameSQL 
     updCmd.Execute 
End If 

à la fin: updCmd.Execute I obtenez l'erreur ci-dessus.

Que pourrais-je faire de mal?

Merci d'avance!

PS: serveur est Win2003 R2 x86

Répondre

1

Je me demande serait-il la peine d'essayer une chaîne de connexion différente?

updFileNameSQL ="insert into cos_lot(lot_vin) " & _ 
    "SELECT vin " & _ 
    "FROM OPENROWSET " & _ 
    "('Microsoft.Jet.OLEDB.4.0'," & _ 
    "'Text;HDR=Yes;FMT=Delimited;DATABASE=" & sServerPath & ";'," & _ 
    "'SELECT vin from [" & UplFileName & "]') " & _ 
    "where not vin IS NULL AND vin collate SQL_Latin1_General_CP1_CI_AS " & _ 
    "not in (select lot_vin from cos_lot) " 
Questions connexes