我正在尝试在 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;