1

我创建了一个链接服务器(用于 excel),当我运行如下查询时

当我使用 Windows 身份验证连接 SQL Server Management Studio 并运行以下查询时,它可以工作。

select * from linkserver...sheet1$

如果我使用 sa 帐户登录,相同的查询会出现以下错误。

 The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "exportlink"
 reported an error. The provider did not give any information about the error.
 Msg 7303, Level 16, State 1, Line 1
 Cannot initialize the data source object of OLE DB provider   
 "Microsoft.ACE.OLEDB.12.0" for     linked server "linkedserver

虽然这似乎是一个安全问题,但我不知道如何解决它。

4

1 回答 1

0

默认情况下,链接服务器将当前用户凭据传递给链接服务器。

映射由sp_addlinkedsrvlogin创建,此位中提到了默认值

本地服务器上的所有登录名和链接服务器上的远程登录名之间的默认映射是通过执行 sp_addlinkedserver 自动创建的。默认映射表明 SQL Server 在代表登录名连接到链接服务器时使用本地登录名的用户凭据。这等效于在链接服务器的 @useself 设置为 true 的情况下执行 sp_addlinkedsrvlogin,而无需指定本地用户名。仅使用 sp_addlinkedsrvlogin 更改默认映射或为特定本地登录添加新映射。

当您使用“sa”时,它(我不确定也无法测试)使用 SQL Server 服务帐户。你应该允许这个。

如果它不使用 SQL Server 服务帐户,则需要为“sa”设置映射:

EXEC sp_addlinkedsrvlogin
        'linkserver', 'FALSE', 'sa', 'Domain\SomeUser', 'Somepassword';
于 2012-10-16T12:34:52.723 回答