sql-server - 从 2014 年升级到 SQL Server 2017 后受信任的程序集功能中断
问题描述
在 2014 年到 2017 年的就地升级过程中,我们遇到了几个问题,即受信任的程序集 CLR 功能在当时干扰了 SSIS 的成功安装。我已经安装并运行了 SSIS,但该功能仍然被破坏。
我当时收到的错误,当我直接查询系统表时仍然收到:“内部表访问错误:无法访问受信任的程序集内部表”。系统视图似乎在“表”TRUSTED_ASSEMBLIES 上运行 OPENROWSET。我在互联网上没有看到很多处理这个问题的人的喋喋不休。
我不打算使用该功能,但我担心它可能会在未来与更新或外部供应商之间引起问题。另一个症状是,为了解决 SSIS 包执行的一些问题,我必须手动将执行权限分配给通常为您完成的低级过程(幸运的是,文档指出哪些内置组可以访问过程)。
如果有人对此问题有任何见解,将不胜感激;猜测拆除和完全重建可能是有序的。
解决方案
您是否为 SQL Server 2017 应用了 CU(累积更新)?如果没有,你可能应该。
是的,“CLR 严格的安全性”/“受信任的程序集”“功能”是垃圾箱之火。请参阅我对以下问题的回答(也在 SO 上)关于解决新的(自 SQL Server 2017 起)限制的正确方法(该答案中的最后一段处理您的情况:预先存在的、未签名的程序集) :
使用模块签名,您应该能够在不直接分配任何权限的情况下让一切正常工作。
至于那个特定的“内部表访问错误”错误,这对我来说是新的。我假设您正在执行SELECT * FROM sys.trusted_assemblies'
作为固定服务器角色sa
成员的其他登录名?sysadmin
如果不是,您将收到一个权限错误,说明:
消息 300,级别 14,状态 1,行 XXXXX
VIEW SERVER STATE 权限被拒绝对象“服务器”,数据库“主”。
消息 297,级别 16,状态 1,行 XXXXX
用户无权执行此操作。
由于您没有收到权限错误,因此某些组件可能没有正确/完全升级(因此确保您已安装最新的 CU可能会检查/修复该问题)。
推荐阅读
- android - Android Studio 中的应用共享按钮
- javascript - iOS 在 Powerpoint 中从 Cordova 应用程序打开 ppt/pptx 文件
- angular - HTTP_INTERCEPTORS 的 multi:true 属性是什么意思?
- javascript - Express JS 中的 POST 函数
- typescript - Intersection not merging enums for property
- vba - 用户输入编辑宏以调整 Excel 排序
- python - PyGame pygame.sprite.collide_mask 没有检测到碰撞?
- javascript - 带有scrollTop的动画div在滚动页面中丢失动画
- python - 将参数替换为语句
- json - JSON - WepAPI - 解析值时遇到意外字符