【问题标题】:Sql Server 2000 openrowset issueSql Server 2000 openrowset 问题
【发布时间】:2011-04-24 13:36:00
【问题描述】:

我正在尝试使用 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:提供程序没有提供有关错误的任何信息。]。

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

【问题讨论】:

  • 这是服务器故障吗?

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


【解决方案1】:

0x80004005 很像拒绝访问。

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

NetworkService account 是一个例外(适用于 Windows 2003 及更高版本)。它是一个可以访问网络的本地帐户,在这种情况下它充当机器帐户(DomainName\MachineName$)。尽管如此,我还是会推荐一个专用的域帐户。

【讨论】:

  • “NetworkService 帐户(在 Windows 2003 及更高版本上可用)”下是什么意思。我在 Windows XP Pro 上有它。 “本地帐户无法在本地计算机之外工作”是不正确的,
  • 本地系统帐户不会
  • @vgv8:Windows XP 和 Windows 2003 在我的书中是一样的。 “网络服务”在 Windows 2000 及更低版本中不能作为帐户使用。由于在 Windows 2000 中大多数服务作为“本地系统”运行,它们根本无法访问网络。 Windows XP/2003 通过引入具有基本网络访问功能的名为“网络服务”的本地帐户来解决此问题。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多