Sql Server 2000 openrowset问题

时间:2010-10-12 21:28:00

标签: sql sql-server tsql sql-server-2000

我正在尝试使用openrowset函数在网络共享上查询和Excel电子表格,但没有成功。我收到以下错误:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;DATABASE=\\server\Xdrive:\Spreadsheet.xls',
    'Select * from [Sheet1$]')
  

服务器:消息7399,级别16,状态1,行1   OLE DB提供程序'Microsoft.Jet.OLEDB.4.0'报告错误。提供商未提供有关错误的任何信息   OLE DB错误跟踪[OLE / DB提供程序'Microsoft.Jet.OLEDB.4.0'IDBInitialize :: Initialize返回0x80004005:提供程序未提供有关错误的任何信息。]。

我搜索过该网站并尝试了不同的语法但没有成功。我已经读过该帐户可能无法访问网络共享。该流程在哪个帐户下运行?

2 个答案:

答案 0 :(得分:0)

0x80004005看起来非常像Access Denied。

您可以在services.msc中查看SQL Server运行的帐户。本地帐户不能在本地计算机之外工作,如果要访问网络上的资源,域帐户是更好的选择。

例外是NetworkService account(在Windows 2003及更高版本上可用)。它是可以访问网络的本地帐户,在这种情况下,它充当计算机帐户(DomainName\MachineName$)。不过我会推荐一个专门的域帐户。

答案 1 :(得分:0)

我会使用网络共享但不会映射驱动器,因为我一直认为他们正在为每个用户创建会话。

它不会导致访问错误,但您可能应该通过读取标题指定不跳过第一行工作表:

  • SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0; DATABASE = \ server \ Xdrive: \ Spreadsheet.xls ; HDR = NO ',
    '从[Sheet1 $]'中选择*)