【问题标题】:SQL Server Linked Server to Microsoft AccessSQL Server 链接服务器到 Microsoft Access
【发布时间】:2011-01-13 02:49:33
【问题描述】:

我尝试通过执行以下操作来使用 SQL Server 2008 中的链接服务器来访问 Microsoft Access 2003 表。

EXEC sp_addlinkedserver access1t, 'OLE DB Provider for Jet', 'Microsoft.Jet.OLEDB.4.0', 'C:\tester.mdb'
EXEC sp_addlinkedsrvlogin access1t, FALSE, Null, Admin, Null
GO
CREATE VIEW TI001APCE1265 AS SELECT * FROM access1t...Table1

但是,我得到了错误:

OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "access1t" returned message "Unspecified error".
Msg 7303, Level 16, State 1, Procedure TI001APCE1265, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "access1t".

我的访问数据库上没有密码/用户名,但是查看我理解的文档,我必须像上面一样使用 sp_addlinkedsrvlogin。我也试过没有登录。

我还是遇到同样的错误 - 这是怎么回事?!

谢谢大家

调试输出

数组 ( [0] => 数组 ( [0] => 42000 [SQLSTATE] => 42000 [1] => 7303 [代码] => 7303 [2] => [Microsoft][SQL Server Native Client 10.0][SQL Server]不能 初始化数据源对象 OLE DB 提供程序 “Microsoft.Jet.OLEDB.4.0”用于链接 服务器“access1265293168”。 [信息] => [Microsoft][SQL Server Native Client 10.0][SQL Server]不能 初始化数据源对象 OLE DB 提供程序 “Microsoft.Jet.OLEDB.4.0”用于链接 服务器“access1265293168”。 ) [1] => 数组([0] => 01000 [SQLSTATE] => 01000 [1] => 7412 [代码] => 7412 [2] => [Microsoft][SQL Server Native Client 10.0][SQL Server]OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0” 链接服务器“access1265293168” 返回消息“未指定的错误”。 [消息] => [微软][SQL Server Native Client 10.0][SQL Server]OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0” 链接服务器“access1265293168” 返回消息“未指定的错误”。 ))

【问题讨论】:

  • 我在看这个问题:stackoverflow.com/questions/2065083/… - 我将如何传递 NT 登录??
  • NT AUTHORITY\SYSTEM 也不起作用,如果是这样的话。
  • 您是否尝试过提供 Jet 默认用户名“admin”?我不知道它是否需要,但没有用户参与就打开 Jet 数据存储这样的事情。

标签: sql-server tsql ms-access oledb linked-server


【解决方案1】:

你尝试过命名参数吗?:

EXEC sp_addlinkedserver 
   @server = 'access1t', 
   @provider = 'Microsoft.Jet.OLEDB.4.0', 
   @srvproduct = 'OLE DB Provider for Jet',
   @datasrc =  'C:\tester.mdb'
GO

您可能只需要用单引号括起来的服务器名称'access1t'

[您的登录用户是否有权访问C:驱动器的根目录? ]

【讨论】:

  • 我以管理员身份登录。我想是因为我为 sp_addlinkedsrvlogin 的 @useself 属性传入了 false - 它只会使用我提供的用户名和密码来访问 Microsoft 访问数据库。我也刚刚尝试了你的代码并删除了我的第一行,但我仍然得到同样的错误。我添加了一些带有 sql server 错误代码的调试输出,但我不知道它们是什么意思!
  • 我玩了一下这个,对我来说,错误似乎是由于权限造成的。当我作为这台 PC 的 Admin 用户登录 SQL Server 时,我可以连接到 c:\docs\test.mdb,如上图所示,其他一些问题,我不能。
  • @Remou 我认为这是一个权限/凭据问题。我正在使用这个EXEC sp_addlinkedsrvlogin acc465tghv, TRUE,这似乎有效。我现在只是在测试和玩弄。
  • Jet/ACE 数据存储必须可写才能使用,因此您需要将其存储在可读取/写入的位置,以便您运行 Windows 登录。默认情况下,C: 的根目录对于非管理员用户是只读的(实际上是从 Win2000 开始),所以问题很可能是 C: 根目录上的 NTFS 权限阻止了写入访问这里需要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多