无法使用sa帐户运行链接服务器查询,但可以使用Windows身份验证用户运行

时间:2012-10-16 12:24:36

标签: sql-server-2005

我创建了一个链接服务器(用于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

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

1 个答案:

答案 0 :(得分:0)

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

映射由sp_addlinkedsrvlogin创建,默认值在此位

中提及
  

执行sp_addlinkedserver会自动创建本地服务器上的所有登录与链接服务器上的远程登录之间的默认映射。默认映射表明SQL Server在代表登录名连接到链接服务器时使用本地登录的用户凭据。这相当于为链接服务器执行sp_addlinkedsrvlogin并将@useself设置为true,而不指定本地用户名。仅使用sp_addlinkedsrvlogin更改默认映射或为特定本地登录添加新映射。

当你使用" sa"然后它(我不确定并且无法测试)使用SQL Server服务帐户。你应该允许这个。

如果它没有使用SQL Server服务帐户,则需要为" sa"设置映射:

EXEC sp_addlinkedsrvlogin
        'linkserver', 'FALSE', 'sa', 'Domain\SomeUser', 'Somepassword';