日期:2014-05-17  浏览次数:20573 次

执行存储过程错误
存储过程为
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]
GO

DECLARE @return_value int

EXEC @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_value

GO
执行后报错:
消息 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

------解决方案--------------------
@FilePath = N'C:\\Documents and Settings\\gjd\\My Documents\\Visual Studio 2010\\WebSites\\tt2\\Files\\Excel03.xls',
数据库中\并非特殊字符,不需要两个,改成一个
------解决方案--------------------
你可以把 @SQL 的最终结果打印出来,再手动执行打印的结果看看。
------解决方案--------------------
引用:
回1楼
改了,但是问题依旧

记得点引用

SET @SQL = @SQL + @FilePath + ';Extended Properties=Excel 8.0;HDR=' + @HDR + ''')...[' 

这里单引号多拼接了
------解决方案--------------------
http://bbs.csdn.net/topics/370154254