存储过程为
ALTER PROCEDURE [dbo].[spx_ImportFromExcel03]
@SheetName varchar(20),
    @FilePath varchar(100),
@HDR varchar(3),
    @TableName varchar(50)
AS
BEGIN
    DECLARE @SQL nvarchar(1000)

IF OBJECT_ID (@TableName,'U') IS NOT NULL
SET @SQL = 'INSERT INTO ' + @TableName + ' SELECT * FROM OPENDATASOURCE'
ELSE
SET @SQL = 'SELECT * INTO ' + @TableName + ' FROM OPENDATASOURCE'    SET @SQL = @SQL + '(''Microsoft.Jet.OLEDB.4.0'',''Data Source='
    SET @SQL = @SQL + @FilePath + ';Extended Properties=''''Excel 8.0;HDR=' + @HDR + ''''''')...[' 
    SET @SQL = @SQL + @SheetName + ']'
EXEC sp_executesql @SQL
END执行存储过程语句:
USE [ExcelImport]
GODECLARE @return_value intEXEC @return_value = [dbo].[spx_ImportFromExcel03]
@SheetName = N'Sheet1$',
@FilePath = N'C:\\Documents and Settings\\gjd\\My Documents\\Visual Studio 2010\\WebSites\\tt2\\Files\\Excel03.xls',
@HDR = N'Yes',
@TableName = N'aa'SELECT 'Return Value' = @return_valueGO
执行后报错:
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。
消息 7303,级别 16,状态 1,第 1 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
请问是什么问题,怎样解决,谢谢!sql

解决方案 »

  1.   

    @FilePath = N'C:\\Documents and Settings\\gjd\\My Documents\\Visual Studio 2010\\WebSites\\tt2\\Files\\Excel03.xls',
    数据库中\并非特殊字符,不需要两个,改成一个
      

  2.   

    你可以把 @SQL 的最终结果打印出来,再手动执行打印的结果看看。
      

  3.   

    记得点引用SET @SQL = @SQL + @FilePath + ';Extended Properties=Excel 8.0;HDR=' + @HDR + ''')...[' 这里单引号多拼接了
      

  4.   

    http://bbs.csdn.net/topics/370154254