【问题标题】:Moving C# in Process Functions to SQL Server CLR functions将 C# in Process 函数移动到 SQL Server CLR 函数
【发布时间】:2010-09-30 15:05:29
【问题描述】:

从进程中的 C# 代码迁移到 SQL CLR 函数有哪些限制、意外陷阱和性能特征?

我们目前有几个数据繁重的进程,它们使用进程中的 C# Asp.net MVC 项目运行得非常快,根本不使用数据库。性能非常重要。应用程序使用内存中的静态缓存并执行复杂的操作以达到最终结果。缓存更新有点麻烦,我们正在考虑将其中一些进程转移到 SQL Server 查询中,这些查询只会输出最终结果,以便在 c# 应用程序级别需要更少的数据缓存。这些过程很复杂,我们知道迁移到数据库需要大量使用 SQL Server CLR 函数。

我们看到了利用数据库的许多优势,但由于以下几个原因,需要使用 CLR 函数会导致停顿:

没有 Azure: SQL CLR 函数是 not supported by Azure,

测试成本高:SQL CLR 函数可能会更慢,测试需要大量工作

小用户群: 一个小时的谷歌搜索表明 CLR 函数的使用并不常见,这使得社区支持(以及可能的 MS 支持)成为一个问题。

我很想听听有人将 C# 应用程序从进程中移动到 CLR 函数。

在您的回答中,请假设需要自定义 SQL CLR 函数。

【问题讨论】:

    标签: c# sql-server sqlclr clrstoredprocedure


    【解决方案1】:

    你的

    • 编译
    • 安装
    • 测试
    • 调试

    使用 Sql Server CLR 函数处理要困难得多——我认为你应该尽可能地自动化。

    您可能还需要在每次希望更新函数时征得 DBA 的同意。

    但是,在说“将代码放入数据”之后,有时仍然是一个很好的选择。

    【讨论】:

    • 没有数据库的 Asp.net 应用程序的简单 FTP 部署很难放弃。我现在正在考虑数据库,因为我们需要微调数据插入、更新删除过程,这似乎是数据库领域。通常,我们使用专用盒子,因此我们可以完全控制,除非流量高峰迫使我们扩展到 azure(我们目前正在这样做)。我认为如果我们构建自己的 AMI,我们可以使用 Amazon 来达到峰值,但我不期待摆弄 db 构建过程。
    • 我想知道是否可以尝试使用带有 CLR 的 SQL Compact 来简化部署。 SQL CLR 论坛中的一个老问题似乎说不 social.msdn.microsoft.com/Forums/en-US/sqlnetfx/thread/…
    【解决方案2】:

    如果您自己安装 SQLServer 并像在本地一样单独获得许可,您也许可以在 Azure 中执行此操作,而不是采用他们的托管 SQLServer 环境选项并增加包含 SQLServer 即服务的费用。但随后围绕支持数据库配置所有其他基础设施(备份、HA 等)将由您来完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 2014-01-27
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 2018-04-29
      • 2019-04-05
      相关资源
      最近更新 更多