接受的答案不正确。的WITH OVERRIDE
选项RECONFIGURE
与是否需要重新启动 SQL Server 完全无关。RECONFIGURE的 MSDN 文档指出WITH OVERRIDE
:
禁用配置值检查(对于无效值或非推荐值)...
事实上,在启用或禁用sp_configure
. 一个简单的测试(在 SQL Server 2008 R2 上运行,但在所有支持 SQLCLR 的版本上都一样)证明了这一点:
EXEC sp_configure 'clr enabled'; -- show current value
EXEC sp_configure 'clr enabled', 0; RECONFIGURE;
EXEC sp_configure 'clr enabled'; -- show current value
GO
EXEC sp_configure 'clr enabled'; -- show current value
EXEC sp_configure 'clr enabled', 1; RECONFIGURE;
EXEC sp_configure 'clr enabled'; -- show current value
GO
结果:
注意run_value
场。它以“1”开头,因为我的系统上已经启用了“CLR 集成”。但它只用 call 切换RECONFIGURE
。
name minimum maximum config_value run_value
clr enabled 0 1 1 1
clr enabled 0 1 0 0
clr enabled 0 1 0 0
clr enabled 0 1 1 1
此外,应该说明问题中显示的初始代码,声明
sp_configure 'show advanced options', 1;
是不必要的,因为clr enabled
它不是高级选项。
为了证明clr enabled
不是高级选项,甚至显示另一种方法来证明此选项不需要重新启动,只需执行以下简单查询:
SELECT [name], [value], [value_in_use], [is_dynamic], [is_advanced]
FROM sys.configurations
WHERE [configuration_id] = 1562;
/*
name value value_in_use is_dynamic is_advanced
clr enabled 1 1 1 0
*/
如您在上面显示的结果集中所见,is_advanced
is0
表示“不是高级选项(是的,Microsoft 官方文档目前不正确;我有时间会更新它)。另外,is_dynamic
is1
表示只需执行即可RECONFIGURE
启用立即选项,不需要重新启动实例。
总结一下:启用“CLR 集成”所需的所有步骤的总和,并且不需要重新启动 SQL Server 服务,如下所示:
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
就是这样。**
** WOW64 服务器需要重新启动服务器才能使此选项生效。(clr 启用服务器配置选项)