启用CLR仍然不允许我在sql server上运行代码

时间:2016-02-02 13:26:55

标签: c# sql-server sql-server-2008 sqlclr

我正在使用以下命令尝试在SQL Server 2008实例上启用CLR

CREATE TABLE #tmpInvestorJob (
    LogID INT PRIMARY KEY,
    Completed INT
)

INSERT INTO #tmpInvestorJob
SELECT LogID, COUNT(1)
FROM ...
WHERE [Status] = 3
GROUP BY LogID

UPDATE g
SET Completed = ISNULL(a.Completed, 0)
FROM #TempTimeline g
LEFT JOIN #tmpInvestorJob a ON a.LogID = g.LogID
OPTION(RECOMPILE)

但我仍然收到以下错误

  

禁用.NET Framework代码的执行。设置“clr enabled”   配置选项并重启服务器

我还需要做其他事吗?

3 个答案:

答案 0 :(得分:3)

要查看到目前为止已检查和尝试过的内容:

  1. EXEC sp_configure 'clr enabled', 1;已被执行。
  2. RECONFIGURE;已被执行。
  3. 服务器已重新启动。这应该只是 在WOW64服务器上必要
  4. 正在运行EXEC sp_configure 'clr enabled';会显示1的{​​{1}}。
  5. 正在运行run_value会显示EXEC sp_configure 'lightweight pooling';的{​​{1}}。
  6. sys.dm_clr_properties中的
  7. 0属性值为“使用mscoree锁定CLR版本”,意思是:

      

    可以看到具有mscoree 状态的锁定CLR版本,其中托管CLR未被使用,因此尚未初始化。托管CLR在第一次执行DDL语句(例如CREATE ASSEMBLY (Transact-SQL))或托管数据库对象时初始化。

  8. 尝试/检查的其他事项:

    1. 确保已安装.NET Framework 2.0和3.5 SP1
    2. 确保已通过Windows Update
    3. 应用.NET Framework修补程序
    4. 可能确保在控制面板\程序\程序和功能中安装了“Microsoft SQL Server系统CLR类型”
    5. 检查您的身份验证类型。如果设置为“both”,请尝试更改为“仅Windows”,重新启动SQL Server服务,并查看是否有帮助。这不是一个好的长期解决方案,但可能指向一个方向。
    6. MSSQLSERVER服务登录的帐号是什么?有些报告称“网络服务”或“NT AUTHORITY \网络服务”可能存在问题,可能首选本地系统帐户。
    7. ...

答案 1 :(得分:0)

尝试

EXEC sp_configure 'clr enabled', 1
go
 RECONFIGURE
go
EXEC sp_configure 'clr enabled'
go

另外

  

要启用CLR集成,您必须具有ALTER SETTINGS服务器级别权限,该权限由sysadmin和serveradmin固定服务器角色的成员隐式保留。

答案 2 :(得分:0)

您确定已启用高级选项吗?

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO