Excelファイルの読み取りを自動化するために、データベース内のいくつかのprocに次のものがありました。
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$]')
、どのユーザーがそれを起動しているかに関係なく、クエリは正常に起動します...すべてをopenrowsetにスワップアウトするよりも、opendatasourceが機能する方が良いでしょう...一方が他方よりも機能している理由は何ですか? これらは 64 ビット サーバーですが、openrowset が機能することを考えると問題ありません。どんな助けでも大歓迎です!