我正在尝试运行以下语句:
INSERT INTO table SELECT * FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;
Database=//server/folder/file.xls;
HDR=YES;',
'SELECT * FROM [Sheet1$]')
但是,我收到以下错误:
OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "The Microsoft Access database engine cannot open or write to the file '\\server\folder\file.xls'. It is already opened exclusively by another user, or you need permission to view and write its data.".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
我在 32 位计算机上运行 SQL Server 2005。正在执行的代码最终将来自 IIS6 Web 服务器上的 C# 代码。然而,目前我只是想让它在 SQL Server 上运行。我使用 SQL Auth 登录到 SQL Server,但必须使用特定于共享驱动器(我们网络上的 AD 帐户)的 Windows Auth 来访问该文件。已向 SQL Auth 帐户授予临时权限,以便允许OPENROWSET
.
我尝试过添加UID=user;PASS=pswd
进入OPENROWSET
代码如下:
INSERT INTO table SELECT * FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;
Database=//server/folder/file.xls;
HDR=YES;
UID=user;
PASS=pswd',
'SELECT * FROM [Sheet1$]')
这产生了同样的错误。我还设置了一个SQLCREDENTIAL
使用有权访问该共享驱动器的 Windows 身份验证 Active Directory 帐户的用户 ID 和通行证,但错误仍然存在。
我考虑过使用代理,但这不是 sql server 代理作业。这是一个临时呼叫。
我还使用具有共享权限的用户使用 Windows Auth 登录到 SQL Server,并收到相同的错误。
我对此进行了很多研究,但似乎找不到有效的答案。通过我的搜索,这似乎是很多人都遇到的问题。任何帮助将不胜感激。我很困惑。