1

我正在尝试在 Sql server 2008 R2 中创建链接服务器,只是尝试从 Microsoft 下载“64 位版本的 Office 2010 Access AD Engine”exe。

不幸的是,在进行此安装之前,我曾尝试添加链接服务器,但失败了:

EXEC sp_addlinkedserver 'LinkedServer1', 'Excel', 'Microsoft.Jet.OLEDB.4.0', 'D:\Folder\Excel1.xls', '', 'Excel 8.0', ''

(如果您有其他方法,请告诉我这种添加方式是否不正确!)

进行下载后,它给出了该服务器已经存在的消息: “服务器'LinkedServer1'仍有远程登录或链接登录。”

尝试在下载后以相同的方式添加“LinkedServer2”(使用 Excel5.0 作为参数而不是 Excel8.0)。有用!然而,这个旧的链接服务器似乎仍然存在,尽管我已经尝试删除它:

为了确保它确实存在,我写了这个:

select * from sys.servers where is_linked =1 

以及详细的属性:

 server_id: 1
 name= LinkedServer1
 product= Excel
 provider = Microsoft.Jet.OLEDB.4.0
 data_source= D:\Folder\Excel1.xls
 location:NULL 
 provider_string: Excel 8.0 
 is_linked=1 
 is_data_access_enabled=1
 modify_date= 2010-08-15 19:56:02.307

如果您发现我做错了什么,请告诉我!我尝试删除“LinkedServer2”,它有效!但是,即使我试图像这样删除相同的链接 server1:

Exec sp_dropserver @server = 'LinkedServer1'

我失败了,同样的信息! “服务器‘LinkedServer1’仍有远程登录或链接登录。”

尝试使用提供程序字符串作为“Excel 5.0”添加链接服务器,并成功添加和删除。


另一个更新: 这又失败了: EXEC(' INSERT INTO Table1 SELECT col1, excel2col, excel3col, Replace(Replace(excel4col, ''"'', '''') FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0 '',''Excel 5.0;HDR=Yes;Database='+'D:\Folder\Excel1.xls'', [Sheet2$])')

错误:OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。我已将配置更改为:

EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
4

1 回答 1

0

看起来像 64 位/Sql Server R2 问题:

要显式删除链接服务器,我们应该使用: sp_dropserver 'LinkedServer1', 'droplogins';

这解决了无效链接服务器的问题。但是,Microsoft.jet.OLEDB.4 不工作,同样的错误不断出现:

<Errors> <Error>ERROR CAUGHT: OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.</Error> </Errors>

尝试下载 Microsoft.ACE.OLEDB.12.0 并使用它来添加链接服务器。但是,当我尝试使用 OpenRowSet 向表中插入时,出现了一个新错误:

    Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. Access denied.
Msg 7301, Level 16, State 2, Line 1
Cannot obtain the required interface ("IID_IDBCreateCommand") from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

以前有人遇到过这个问题,或者知道如何解决这个问题吗?

于 2010-08-16T17:37:27.273 回答