我们计划通过启用数据访问来更改SQL2k5服务器实例的默认服务器选项。
原因是我们想在服务器上运行SELECT * FROM OPENQUERY(LOCALSERVER, '...')类似的语句。
为本地服务器( sys.servers.server_id = 0 )启用服务器选项“数据访问”(别名sys.servers.is_data_access_enabled )有什么可能的缺点?
(默认情况下,MS将此选项设置为禁用必须有一个原因…)
编辑:事实certificate,我不是第一个问这个问题的人:
http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/11/22/data-access-setting-on-local-server.aspx
数据访问服务器选项没有很好的logging在我看来 – 书籍在线说,这是一个链接服务器的属性。 它根本没有提到你实际上可以在你的本地服务器上启用OPENQUERY调用。 我注意到,当你禁用链接的服务器上的数据访问,你不能使用OPENQUERY或四部分命名约定查询位于它上面的任何表(我在我的环回服务器上testing)。 您仍然可以调用返回行集的过程(包含四部分命名)。 那么,有趣的问题是为什么它在本地服务器上被默认禁用 – 我想阻止用户使用OPENQUERY来对付它。
也似乎该职位的作者是堆栈溢出用户:-)
更新: 另一个技术博客在2014年遇到了同样的问题。 也是一个Stackoverflow用户。
MS将此选项设置为禁用默认是有原因的。
一段时间以来,微软的产品已经采取了“安全开箱即用”的方法。 这意味着需要明确打开诸如打开链接服务器的数据访问等function。 这可以防止用户(或pipe理员)无意中启用可能具有安全风险的选项。