链接服务器“(null)”的OLE DB提供程序“MSDASQL”报告错误

时间:2010-08-26 09:19:58

标签: sql sql-server sql-server-2005 iis

我非常非常困在这里,非常感谢帮助。 我想做什么?

有一个带有CSV上传的ASP页面(经典ASP)会出现以下错误:

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 = '

当我在以下查询中用txtsrv替换MSDASQL时,我收到此错误:

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

这是插入完成的代码:

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 个答案:

答案 0 :(得分:1)

我想知道尝试使用不同的连接字符串是否值得?

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