我在我们的数据库中的几个 procs 中有以下内容,可以自动读取 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 代理或任何其他用户运行,它会以以下极具描述性的方式运行错误:
链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息 >“找不到可安装的 ISAM。”。消息 7303,级别 16,状态 1,行 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 的工作原理,这并不重要。任何帮助将不胜感激!