【问题标题】:Best Practices for embedding .NET assemblies in SQL Server在 SQL Server 中嵌入 .NET 程序集的最佳实践
【发布时间】:2008-09-16 13:09:32
【问题描述】:

在创建将嵌入 SQL Server 2005 的 .NET 程序集时,应遵循哪些重要做法?

我是全新的,我发现有重要的方法属性,例如:

[SqlFunction(FillRowMethodName = "FillRow", TableDefinition = "letter nchar(1)")]

我也在寻找要避免的常见陷阱等。

【问题讨论】:

    标签: .net sql-server-2005 assemblies


    【解决方案1】:

    我记得的一些:

    • 尽量减少使用,仅在 T-SQL 过于复杂时使用。
    • 不惜一切代价避免使用指针/游标,因为 for 循环在 CLR 上下文中很容易被滥用。
    • 除非完全必要,否则仅使用 SQL-Server 本地数据类型。

    不记得我在哪里找到的信息,但那些是我记得的。

    基本上,只有在声明式 T-SQL 过于复杂或无法做到(例如注册表编辑等)时才使用它。

    【讨论】:

      【解决方案2】:

      关于程序集部署的单一提示:

      保持功能在小型程序集之间隔离。尽量不要构建依赖链,因为替换基础程序集意味着您需要先删除依赖程序集,然后才能更新基础程序集。

      【讨论】:

        【解决方案3】:

        我强烈建议不要将 .net 程序集放在您的数据库服务器中,想想 n 层应用程序。持久性

        我能想到将 .net 放入数据库的唯一原因是添加一个新的复杂数据类型,我强烈认为这是一个只保存数据而不对其进行处理的愚蠢类。

        仅仅因为你可以并不意味着你应该。 很抱歉没有直接回答您的问题。

        【讨论】:

        • 有时数据访问还需要比 SQL Server 内置的逻辑更多的逻辑,并且将其部署在数据库服务器上并不会使其成为逻辑 DAL 的一部分。
        • 我将 .NET 程序集用于功能检查约束,因此使用 Management Studio 的用户不会意外将格式错误的电子邮件地址输入到字段中。它使数据库数据保持完全有效,无论它是如何编辑的,并且约束在 C# 中更容易编写和维护。由于它们是用 C# 编写的,因此约束数据库中数据的相同代码也会约束应用程序级别的数据,因此它高度集中且非常易于维护。
        猜你喜欢
        • 2023-03-07
        • 2018-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        • 2011-04-01
        • 1970-01-01
        相关资源
        最近更新 更多