微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 2014 年升级到 SQL Server 2017 后,可信程序集功能被破坏

如何解决从 2014 年升级到 SQL Server 2017 后,可信程序集功能被破坏

在 2014 年到 2017 年的就地升级期间,我们遇到了几个问题,即受信任的程序集 CLR 功能在当时干扰了 SSIS 的成功安装。我已经安装并运行了 SSIS,但该功能仍然损坏。

我当时收到的错误,直接查询系统表时仍然收到的错误是:“内部表访问错误:无法访问可信程序集内部表”。系统视图似乎在“表”TRUSTED_ASSEMBLIES 上运行 OPENROWSET。我在互联网上没有看到很多人在讨论这个问题。

我不打算使用该功能,但我担心它可能会导致未来更新或外部供应商出现问题。另一个症状是,为了解决 SSIS 包执行的一些问题,我必须手动将执行权限分配给通常为您完成的低级过程(幸运的是,文档指出哪些内置组可以访问过程)。

如果有人对此问题有任何见解,我们将不胜感激;猜测可能需要拆除并完全重建。

解决方法

您是否为 SQL Server 2017 应用了 CU(累积更新)?如果没有,您可能应该这样做。

是的,“CLR 严格安全性”/“受信任的程序集”“功能”是垃圾箱火。请参阅我对以下问题的回答(也在 SO 上),关于解决新的(从 SQL Server 2017 开始)限制的正确方法(该答案的最后一段涉及您的情况:预先存在的未签名程序集):

CLR Strict Security on SQL Server 2017

使用模块签名,您应该能够在不直接分配任何权限的情况下让一切正常工作。

至于那个特定的“内部表访问错误”错误,这对我来说是新的。我假设您正在执行 SELECT * FROM sys.trusted_assemblies' 作为 sa 或作为 sysadmin 固定服务器角色成员的其他登录?如果不是,您会收到一个权限错误,说明:

消息 300,级别 14,状态 1,行 XXXXX
对象“服务器”、数据库“主”的 VIEW SERVER STATE 权限被拒绝。
Msg 297,Level 16,State 1,Line XXXXX
用户无权执行此操作。

由于您没有收到权限错误,可能某些组件没有正确/完全升级(因此请确保您已安装最新的 CU 可能检查/修复那个)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。