在SQL Server 2008-r2上启用CLR集成

GVi*_*i82 9 sql-server configuration sqlclr sql-server-2008 sql-server-2008-r2

寻找启用CLR集成我找到了这个文档:http://msdn.microsoft.com/en-us/library/ms131048.aspx,它说使用以下代码将"crl enabled"变量设置为1.

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)

我想知道如果需要重新启动SQL Server?或者,更具体地说,为了启用CRL集成,要遵循哪些步骤?

小智 8

如果使用with override选项,则不需要重新启动.

EXEC sp_CONFIGURE 'show advanced options' , '1';
GO
RECONFIGURE WITH OVERRIDE
GO

EXEC sp_CONFIGURE 'clr enabled' , '1'
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)


Sol*_*zky 6

接受的答案是不正确的.该WITH OVERRIDE选项RECONFIGURE与是否需要重新启动SQL Server完全无关.RECONFIGURE的MSDN文档指出WITH OVERRIDE:

禁用配置值检查(对于无效值或非推荐值)...

事实是,没有SQL Server服务的需要重新启动时启用,或禁用的"CLR集成"选项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 Code Online (Sandbox Code Playgroud)

结果:

注意这个run_value领域.它从"1"开始,因为我的系统已经启用了"CLR集成".但它只用呼叫切换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
Run Code Online (Sandbox Code Playgroud)

此外,还应说明问题中所示的初始代码,声明

sp_configure 'show advanced options', 1;
Run Code Online (Sandbox Code Playgroud)

是不必要的,因为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
*/
Run Code Online (Sandbox Code Playgroud)

正如你可以在上面显示的结果集看,is_advanced0,意思是"没有的高级选项(是的,微软官方文档目前不正确,我会更新它,当我有时间)另外,.is_dynamic1的,这意味着简单地执行RECONFIGURE将使立即选项,不需要重启实例.

总结:启用"CLR集成"所需的所有步骤的总和,无需重新启动SQL Server服务,如下所示:

EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
Run Code Online (Sandbox Code Playgroud)

而已.**


** WOW64服务器需要重新启动服务器才能使此选项生效.(clr启用服务器配置选项)

  • 谢谢你的详细解答.绝对值得一个赞成! (2认同)