【发布时间】:2013-01-10 17:45:35
【问题描述】:
当我在 SQL Server 2000 中使用 OPENROWSET 运行查询时,它可以工作。
但 SQL Server 2008 中的相同查询会产生以下错误:
SQL Server 阻止了对组件“Ad Hoc Distributed Queries”的声明“OpenRowset/OpenDatasource”的访问,因为该组件作为该服务器安全配置的一部分被关闭。系统管理员可以使用 sp_configure
启用 'Ad Hoc Distributed Queries'
【问题讨论】:
-
顺便说一句,您最好注意警告并更改您的 SQL 代码以使用链接服务器而不是 OPENROWSET。
-
@RBarryYoung 这并不是一个真正的“警告”——它只是一个说明它没有启用的通知。启用此功能有什么危险?
-
如果恶意用户能够在某处注入 SQL,打开此选项可以让他们探测他们选择的数据文件。如果您将其设置为链接服务器,则只有特定文件 - 链接服务器 - 被公开(并且您拥有可以使用的集成 SQL Server 安全性等)。
-
但我确实喜欢这个选项用于我的内部测试和数据迁移......因此寻找如何再次使用它:)
标签: sql sql-server-2008