gpt4 book ai didi

sql-server - AWS SQL Server 2017 RDS 上的 SQLCLR 支持

转载 作者:行者123 更新时间:2023-12-02 22:09:12 30 4
gpt4 key购买 nike

我需要在 AWS SQL Server 2017 RDS 中加载程序集。

我在文档中找不到它。这可能吗?如果是,那么如何?

这与“SQL Server CLR stored procedures in AWS? ”类似,但不重复,因为我需要在 SQL Server 2017 AWS 中创建程序集,并且无法将参数 clrenabled 更改为 1这个版本,并且该问题或答案中没有解决这个问题。

最佳答案

虽然这曾经有效(我在 AWS 2016 SP1 CU2 上进行了测试),但现在(从 SQL Server 2017 开始)由于新的“CLR 严格安全”实例级配置设置而被 AWS 阻止.

根据 Reddit discussion comment on the answer linked by @Larnu 中指出,

In RDS SQL Server 2016 and backwards, CLR is supported in SAFE mode and using assembly bits only. Since in SQL Server 2017 the parameter 'CLR strict security' is set to 1 by default and even using CLR SAFE and assembly bits options, you will receive an error because the parameter 'CLR strict security' need to be disabled or need to trust the assembly by using the stored procedure "sp_add_trusted_assembly". But this stored procedure, requires sysadmin permissions, that is not supported in RDS SQL Server as you can see in the Microsoft Documentation: ...

Therefore, RDS does not support UNSAFE assemblies, and all the assemblies are treated like UNSAFE with this new feature, the feature CLR will not be supported in RDS SQL Server 2017. The parameter 'CLR strict security' will be blocked by our automation's and customers will not be able to modify this. CLR uses CAS (code access security) in the .NET Framework and is no longer supported as a security issue. A CLR assembly created with PERMISSION_SET = SAFE may be able to access to external resources, unmanaged code and acquire sysadmin privileges.
...
It is unfortunate that because of the above, CLR feature is NOT SUPPORTED in RDS SQL Server 2017.

You can however, also consider using SQL Server on EC2 which gives you full Administrative privileges just like you would with on-prem installations.

起初我希望有办法让 AWS 取消这一限制,因为 AWS 的理由是:

  1. the parameter 'CLR strict security' need to be disabled or need to trust the assembly by using the stored procedure "sp_add_trusted_assembly"

    这并不完全正确。您还可以使用Module Signing (无论如何,这是更好的方法)

  2. RDS does not support UNSAFE assemblies, and all the assemblies are treated like UNSAFE with this new feature

    这种措辞是微软的一个重大失误。在操作意义上,程序集被视为不安全,仅在加载要求中。这意味着所有程序集,甚至那些标记为SAFEEXTERNAL_ACCESS的程序集,都必须通过之前仅为UNSAFE保留的相同检查组件。

由于这两个原因本质上都是误解,我认为也许 AWS 可以重新允许“启用 CLR”并仅通过模块签名支持SAFE 程序集。但是,后来我重新阅读了“AWS Premium Support”的消息,并注意到他(“Johnson”)表示不支持 sp_add_trusted_assemble 的原因是它需要 sysadmin 权限,不支持。模块签名方法需要向基于证书的登录授予 UNSAFE ASSEMBLY 权限,并且只有 sysadmin 可以执行此操作。所以即使这样也行不通。看起来您唯一的选择是运行一个 EC2 VM,并在其上运行 SQL Server(由 AWS 支持和 @BeardOfTriumph's answer 建议)。

这种情况与 Azure 非常相似:Azure SQL 数据库根本不支持 SQLCLR(尽管之前支持了大约 18 个月,于 2016 年 4 月中旬突然结束),但您可以在 Azure VM 上运行 SQL Server以获得完整的 SQLCLR 支持,最近他们推出了支持 SQLCLR 的 Azure SQL 数据库托管实例。

无论如何,从不支持从 DLL 创建,只支持从 VARBINARY 文字/十六进制字节创建。您可以使用我创建的开源实用程序 BinaryFormatter 将 DLL 转换为 VARBINARY 字符串。 。另外,请参阅我的系列文章: SQLCLR vs SQL Server 2017

关于sql-server - AWS SQL Server 2017 RDS 上的 SQLCLR 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57162012/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com