这是我的场景。
我在一台服务器上运行 SharePoint 2010,在另一台服务器上运行 SQL Server。两台机器都在同一个域上,但所涉及的登录名对每台机器都是本地的。SharePoint 作为 NT Authority\Network Service 运行,如果这有什么不同的话。
我创建了一个从删除 SQL Server 中提取数据的 BCS。连接字符串如下所示:Data Source={0}; Initial Catalog={1};User Id={2}; Password={3}; Integrated Security=SSPI
。一旦所有 {x} 都被替换,我已经确认连接字符串格式正确。
如果您从运行在同一台机器(也就是说,托管 SharePoint 的机器)上的浏览器访问 SharePoint 站点,这很好用。一旦您从另一台机器上的浏览器连接到它,它就会失败。
在 SQL Server 上使用分析器显示,当“本地”访问 SharePoint 时,进行查询的用户是登录帐户。当它远程运行时,用户是“匿名的”。由于账户权限,前者成功,后者失败。在任何情况下,用户实际上都不是连接字符串中提供的那个。
这个答案表明问题可能与连接池有关,但并没有帮助我解决问题。
那么,简而言之,我怎样才能让这个 BCS 真正尊重连接字符串用户名/密码对?或者,如果做不到这一点,我怎样才能达到同等的目的?服务器设置(一个是 SharePoint,另一个是 SQL Server)是不可协商的;很遗憾。