我必须将 Excel 模板复制到另一个文件夹才能导入数据。以下是我正在使用的两个 SQL 语句:
声明1:
exec xp_cmdshell 'copy C:\inetpub\wwwroot\app_data\export_templates\myExport.xlsx C:\inetpub\wwwroot\app_data\tmp\myExport130301172218.xls'
声明2:
insert into
OPENROWSET('Microsoft.ACE.OLEDB.12.0'
, 'Excel 12.0;Database=C:\inetpub\wwwroot\app_data\tmp\myExport130301172218.xls;'
, 'SELECT * FROM [Sheet1$]')
SELECT * FROM vw_shrub
如果我分别执行上述 SQL 语句,它们就可以正常工作。但是,如果我一起执行它们,则会引发以下错误:
链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“Microsoft Access 数据库引擎找不到对象 'Sheet1$'。请确保该对象存在并且您拼写了它的名称和路径名正确。如果“Sheet1$”不是本地对象,请检查您的网络连接或联系服务器管理员。”。
消息 7350,级别 16,状态 2,行 2
无法从链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”获取列信息。
问题是我想将它们都从我的应用程序作为单个请求传递。因此,我必须一起执行它们。我发现如果我在它们之间添加 GO,我可以在 Management Studio 中一起执行它们。但是当我从我的应用程序传递请求时,我不能使用 GO。