目的;执行目录下的所有存储过程
源码:
create table #(a varchar(100))
declare @sql varchar(1000),@a varchar(100)
exec master..xp_cmdshell 'dir /B c:\*.sql >c:tmp.txt'
c:\aaa\bbb下所有的sql文件名
INSERT # SELECT * FROM   OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Text;HDR=no;DATABASE=c:\',tmp#txt)
declare cur cursor for select a from #
open cur
fetch next from cur into @a
while @@fetch_status=0
begin
      set @sql='osql /S www-705 /U sa /P 123 /i c:\'+@a
      exec master..xp_cmdshell @sql
end
close cur
deallocate cur
drop table #
问题:未能处理对象 'tmp#txt'。OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 指出该对象中没有任何列。
OLE DB 错误跟踪[Non-interface error:  OLE DB provider unable to process object, since the object has no columnsProviderName='MICROSOFT.JET.OLEDB.4.0', Query=tmp#txt']。

解决方案 »

  1.   

    SELECT   *   FROM       OPENROWSET('MICROSOFT.JET.OLEDB.4.0',   'Text;HDR=no;DATABASE=c:\',tmp#txt) 
    ---------------------------------
    SELECT   *   FROM       OPENROWSET('MICROSOFT.JET.OLEDB.4.0',   'Text;HDR=no;DATABASE=c:\',[tmp#txt]) orselect *
    from opendatasource('microsoft.jet.oledb.4.0','Text;hdr=yes;database=c:\')...[tmp#txt]
      

  2.   

    select * from OpenRowset('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=C:\Documents and Settings\Administrator\桌面;','select * from bb.txt')