CREATE PROCEDURE [dbo].[bbjdr]
@filename varchar(200), --Excel文件名
@exceltablename varchar(20), --EXcel内表名
@tablename varchar(200) --将要存在数据库里的表名
AS
declare @sql varchar(1000)
set ANSI_NULLS on
set ANSI_WARNINGS on
set @sql= ' insert into '[email protected]+
' SELECT * '+
' FROM OpenDataSource( ' 'Microsoft.Jet.OLEDB.4.0 ' ', ' 'Data Source= '[email protected]+
';User ID=Admin;Password=;Extended properties=Excel 8.0;HDR=yes;imex=1 ' ')...[ '[email protected]+ '] '
exec(@sql)
GO
我用这个存储过程 将excel文件导入到数据库中时 总是报服务器: 消息 7405,级别 16,状态 1,行 1
异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。我在存储过程当中设置了,同时也在sql server 数据库中也把
ANSI_NULLS 和 ANSI_WARNINGS 设置成默认值。还是不行
------解决方案--------------------
删除存储过程(如果已经创建好的话),然后在查询分析器中直接执行创建存储过程的代码来创建存储过程就行了.
只有一招:
在查询分析器中重新创建该SP
Drop proc spname
Create proc spname......创建存储过程就行了.
Why?
ANSI_NULLS 和 ANSI_WARNINGS
设置的保留问题,存储过程创建后,创建时的ANSI_NULLS 和 ANSI_WARNINGS 选项就会一直保留.
所以删除存储过程重就行了(在查询分析器中建,是因为查询分析器的默认ANSI_NULLS 和 ANSI_WARNINGS 设置是on
------解决方案--------------------
你这样无法知道错误所在,先执行倒表的sql 看看能否成功.
然后在依次将变量放在sql执行
------解决方案--------------------
set ANSI_NULLS on
set ANSI_WARNINGS on
这两个选项应该放在创建存储过程之前,保证整个存储过程执行中都是打开的