我在数据库中的几个proc中有以下内容以自动读取excel文件:
SELECT *
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'data source=\\server\Uploads\Unprocessed\uploadedfile-Mailing.xls;
Extended Properties=Excel 12.0 XML;HDR=NO;IMEX=1;')...['_Export_Finished$']
我们最近添加了一些服务器,现在我们似乎正在使用opendatasource专门有权限错误...如果该命令作为SA运行它工作正常,如果它作为sql代理运行或任何其他用户它与以下极其描述性的错误:
OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”用于链接服务器“(null)”返回消息>“找不到可安装的ISAM。”。 Msg 7303,Level 16,State 1,Line 1 无法为>链接服务器“(null)”初始化OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。
然而,当我们像这样使用openrowset时:
select * from
openrowset('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0 Xml;HDR=no;IMEX=1;Format=xlsx;Database=\\server\Uploads\Unprocessed\uploadedfile-Mailing.xls',
'select * from [_Export_Finished$]')
,查询触发得很好,不管用户正在触发它...对于opendatasource工作而不是必须将所有内容换成openrowset更好...任何想法为什么一个在另一个上工作?这些是64位服务器,但考虑到openrowset的工作原因并不重要。任何帮助都将非常感谢!