Поставщик OLE DB "MSDASQL" для связанного сервера "(null)" сообщил об ошибке - PullRequest
0 голосов
/ 26 августа 2010

Я очень застрял здесь, помощь очень ценится.Что я пытаюсь сделать?

Есть ASP-страница (классический ASP) с загрузкой CSV, которая выдает следующую ошибку:

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 

Я создал два связанных сервера:

   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'

и

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

'

Когда я заменяю MSDASQL на txtsrv в следующем запросе, я получаю эту ошибку:

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

Thisкод, в котором выполняется вставка:

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

в конце: updCmd.Execute Я получаю вышеуказанную ошибку.

Что я могу сделать неправильно?

Заранее спасибо!

PS: сервер Win2003 R2 x86

1 Ответ

1 голос
/ 10 февраля 2011

Интересно, стоило бы попробовать другую строку подключения?

 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) " 
...