从SQL Server查询"Microsoft.ACE.OLEDB.12.0"提供程序时出错

Boo*_*ier 10 t-sql sql-server

这不是一个问题,但这篇文章可能对社区有用,因为我无法在互联网上找到答案.

经过测试

  • Windows 2008 R2 x64和Windows 2003 x64
  • SQL Server 2008 SP3 x64
  • 提供者Microsoft.ACE.OLEDB.12.0 x64

SQL Server在域帐户下运行,该帐户不是本地计算机的管理员.SQL Server连接身份验证是Windows.

问题是:

在使用此提供程序创建和使用链接服务器或adhoc查询时,您可能会收到以下错误:

链接服务器"xxx"的OLE DB提供程序"MSDASQL"返回消息"[Microsoft] [ODBC驱动程序管理器]驱动程序的SQLSetConnectAttr失败"

链接服务器"xxx"的OLE DB提供程序"MSDASQL"返回消息"[Microsoft] [ODBC dBASE驱动程序]您的网络访问被中断.要继续,请关闭数据库,然后再次打开它.

无法为链接服务器"xxx"初始化OLE DB提供程序"MSDASQL"的数据源对象

找不到可安装的ISAM

用于链接服务器"xxx"的OLE DB提供程序"MSDASQL"返回消息"[Microsoft] [ODBC dBASE驱动程序]常规错误无法打开注册表项临时(易失性)进程0x16f4的Ace DSN线程0x2728 DBC 0x1ce64ae8 Xbase'

原因是提供程序使用用户连接的凭据在SQL Server的域帐户的临时文件夹中创建临时文件.普通用户没有这样的权限.

Bil*_*ard 1

解决方案是
向 SQL Server 用户授予对 Sql Server 域帐户临时文件夹的“修改”权限。这个文件夹通常是

  • Windows 2003:“c:\Documents and Settings\sql_server_account_name\Local Settings\Temp\”
  • Windows 2008:“C:\Users\sql_server_account_name\AppData\Local\Temp\”