如何找出SQL Server上OLE提供程序权限的原因?

时间:2013-03-25 14:36:59

标签: sql-server-2008 tsql oledb openrowset

我在Windows 7 64位上安装了Office 2010 64位。 Windows 7上也安装了SQL Server 2008。

然后我尝试使用Microsoft.ACE.OLEDB.12.0通过T-SQL访问excel文件中的数据。

我在SQL Server Mgmt Studio中使用以下类型的查询尝试T-SQL:

SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\Temp\book1.xlsx;', 'SELECT * FROM [Sheet1$]')

如果我使用“以管理员身份运行”启动SQL Server Mgmt Studio,则可以。我可以从/向Excel文件访问/插入数据。

如果我直接启动Mgmt Studio(使用我的AD帐户),我会收到如下错误:

  

链接服务器“(null)”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“未指定错误”。

  消息7303,级别16,状态1,行1   无法为链接服务器“(null)”初始化OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。

但实际上,我的帐户也是一个管理员帐户(它位于本地管理员组和AD管理员组中)。

因为我需要在代码中运行OpenRowSet之类的T-SQL,所以不确定如何解决此问题。

对于本案例,OpenRowSet看起来只适用于本地管理员运行MSSM。

我尝试从另一台计算机运行MSSM,并得到与上面相同的错误。

2 个答案:

答案 0 :(得分:3)

弄清楚:以sa登录解决此问题。

答案 1 :(得分:0)

尝试将Excel文件放在用户帐户有权访问的位置,而无需管理员权限。

例如,您的用户文件夹是更好的选择。在没有管理员权限的情况下运行时,Windows将限制对这些类型文件夹的访问。