在SQL Server中嵌入.NET程序集的最佳实践

在SQL Server中嵌入.NET程序集的最佳实践,.net,sql-server-2005,assemblies,.net,Sql Server 2005,Assemblies,创建要嵌入SQL Server 2005的.NET程序集时,需要遵循哪些重要实践 我对这一点是全新的,我发现有一些重要的方法属性,如: [SqlFunction(FillRowMethodName = "FillRow", TableDefinition = "letter nchar(1)")] 我也在寻找要避免的常见陷阱,等等。我记得的一些陷阱: 将其使用保持在最低限度,仅在T-SQL证明过于复杂时使用 不惜一切代价避免指针/游标,因为for循环在CLR上下文中很容易被滥用 除非完全必要

创建要嵌入SQL Server 2005的.NET程序集时,需要遵循哪些重要实践

我对这一点是全新的,我发现有一些重要的方法属性,如:

[SqlFunction(FillRowMethodName = "FillRow", TableDefinition = "letter nchar(1)")]
我也在寻找要避免的常见陷阱,等等。

我记得的一些陷阱:

  • 将其使用保持在最低限度,仅在T-SQL证明过于复杂时使用
  • 不惜一切代价避免指针/游标,因为for循环在CLR上下文中很容易被滥用
  • 除非完全必要,否则仅使用SQL Server本机数据类型
我记不起我在哪里找到的信息,但这些是我确实记得的


基本上,只在声明性T-SQL太复杂或无法执行(如注册表编辑等)时使用它。

有关程序集部署的单个提示:


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

我强烈建议不要将.net程序集放在数据库服务器中,请考虑n层应用程序。持久性有时候数据访问也需要比SQL server内置的更多的逻辑,而在数据库服务器上部署它并不会减少逻辑DAL的一部分。我使用.NET程序集进行功能检查约束,这样使用Management Studio的人就不会意外地键入格式错误的电子邮件地址,例如,进入田野。无论数据库数据如何编辑,它都能保持其完全有效,并且约束更易于在C#中编写和维护。由于它们是用C#编写的,因此约束数据库中数据的代码也约束应用程序级别的数据,因此其高度集中且易于维护。