insert into lott(qishu,N1,N2,N3) select * from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\play.xls', play$)qishu列是nvarchar,其他是int,excel也是这4列,可是在sql server中一运行,上述脚本就自动变成:(并且报错)INSERT INTO lott
      (qishu,,,)
SELECT *
FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 
      'Excel 5.0;HDR=YES;DATABASE=c:\play.xls', play$) Rowset_2
怎么回事?

解决方案 »

  1.   

    如果是报这个错:
    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 那么这样解决:
    EXEC sp_configure 'show advanced options', 1 
    GO 
    RECONFIGURE 
    GO 
    EXEC sp_configure 'Ad Hoc Distributed Queries', 1  --再有类似,替换这里即可
    GO 
    EXEC sp_configure 'show advanced options', 0
    GO
    RECONFIGURE 
    GO
      

  2.   

    建议不要写成SELECT *,最好写成字段,比如:select col1,col2,.....然后再试一下.