exec sp_configure 'show advanced options',1 RECONFIGURE exec sp_configure 'Ad Hoc Distributed Queries',1 RECONFIGURE 运行以上语句报错,报错内容如下: Configuration option 'show advanced options' changed from 1 to 1. Run the RECONFIGURE statement to install. Msg 5808, Level 16, State 1, Line 49 Ad hoc update to system catalogs is not supported. 最后改为以下就不会报错 exec sp_configure 'show advanced options',1 RECONFIGURE WITH OVERRIDE exec sp_configure 'Ad Hoc Distributed Queries',1 RECONFIGURE WITH OVERRIDE 运行结果如下:
Configuration option 'show advanced options' changed from 1 to 1. Run the RECONFIGURE statement to install. Configuration option 'Ad Hoc Distributed Queries' changed from 1 to 1. Run the RECONFIGURE statement to install.
关于RECONFIGURE和RECONFIGURE WITH OVERRIDE的区别,我查阅的在线文档是这样解释的:
RECONFIGURE 和 RECONFIGURE WITH OVERRIDE 对每个配置选项都有效。 但是,基本 RECONFIGURE 语句会拒绝处于合理范围之外或可能导致选项冲突的任何选项值。 例如,如果 recovery interval 的值大于 60 分钟,或 affinity mask 的值与 affinity I/O mask 的值重叠,则 RECONFIGURE 会生成错误。 与此相反,RECONFIGURE WITH OVERRIDE 则接受具有正确数据类型的任何选项值,并使用指定的值强制进行重新配置。
注意: 不合适的选项值会给服务器实例的配置造成不利影响。 请谨慎使用 RECONFIGURE WITH OVERRIDE。
另外有关RECONFIGURE 我们需要知道以下情况:
RECONFIGURE 语句可以动态更新某些选项,而其他选项的更新则需要停止服务器再重新启动才能实现。 例如,在数据库引擎中会动态更新 min server memory 和 max server memory 服务器内存选项,所以无需重新启动服务器便可更改这两个选项。 与此相反,重新配置 fill factor 选项的运行值时,则需要重新启动数据库引擎。
对某个配置选项运行 RECONFIGURE 后,可通过执行 sp_configure'option_name' 来查看是否已动态更新了该选项。 对于动态更新的选项而言,run_value 列和 config_value 列的值应匹配。 还可以通过查看 sys.configurations 目录视图的 is_dynamic 列来确定哪些选项是动态的。
注意:如果为选项指定的 value 值过高,则 run_value 列将反映这样的事实:数据库引擎默认使用动态内存,而不使用无效设置。