我正在将数据库迁移到 Azure SQL 数据库。我阅读了有关 Azure SQL 数据库和 Azure 托管实例之间的差异,并注意到 Azure SQL 数据库不支持 CLR 函数。
这让我很惊讶,因为我已经将测试版数据库加载到 Azure SQL 数据库中,没有人抱怨出现问题。我查看了一下,果然,CLR 程序集就在那里,使用 CLR 函数运行查询工作正常。
因此我在网上搜索,看到的所有信息都是 CLR 不适用于 Azure SQL 数据库。但我在这里,Azure SQL 数据库中有一个可以运行的 CLR 程序集。
所以现在我想知道,我是否应该告诉企业我们必须改用托管实例,因为这是唯一支持 CLR 的地方?还是坚持使用 Azure SQL 数据库,因为它运行良好?还是我错过了什么?微软是否在没有告诉任何人的情况下重新启用了 CLR?
长话短说... CLR 在 Azure SQL DB 中技术上是可行的,但它通常对租户是禁用的。它可以启用,但要视具体情况而定,并取决于微软的决定——微软可能不再有选择地启用它。
官方立场是它不支持 Azure SQL 数据库,您应该在决策时使用官方立场。
目前,情况可能不会一直如此。也许您的组织有足够的吸引力让 Microsoft 为您启用此功能。
如果您需要使用 CLR,那么可以。您也可以不使用云并运行自己的数据库服务器。还有许多其他云主机可以运行 CLR,这可能比 MI 更便宜/更快。
不应该在 Azure SQL 数据库上使用新的随机 CLR。唯一支持的可能性是,如果此特定 CLR 之前已被 Microsoft 允许。这里有些奇怪。如果您在 Microsoft 有联系人,最好通知他们。
附言:我曾经在微软负责处理 Azure SQL DB 中的 CLR 程序集,但显然我无法详细说明如何完成此操作。
“不支持”与“无法使用”不同。但它等同于“Microsoft 保留随时撤走此特定产品的权利,如果发生这种情况,而您又依赖该产品,那只能怪您自己”。
所以是的,您需要使用托管实例。或者您可以将软件带入当前十年并放弃 SQLCLR 支持。