关于扩展存储程序的思考

时间:2010-02-19 14:25:21

标签: sql-server database-design stored-procedures

我希望使用SQL Server或任何其他RDBMS中没有的函数和逻辑在数据库中插入和更新记录。今天早上谷歌搜索了一下后,我遇到了扩展存储过程的概念。据我所知,我应该能够将我想要的功能编译成一个dll,使用该DLL进行存储过程来进行插入/更新。

然而,我遇到的大多数文章和例子都有些过时(~2000)。扩展存储过程仍然是可接受的做法吗?我不是这方面的专家,所以任何其他建议或意见将不胜感激。

3 个答案:

答案 0 :(得分:8)

如果您使用的是SQL Server 2005或更高版本,则需要查看SQL CLR。您可以从SQL Server中调用.NET代码。

MSDN上的

This文章是一个很好的起点。

答案 1 :(得分:2)

  

扩展存储过程是否仍然存在   一种可接受的做法?

不,他们已被官方弃用,并将在未来的版本中继续使用。请参阅 SQL Server未来版本中不支持的功能表中的Deprecated Database Engine Features in SQL Server 2008

  • 扩展存储过程编程:改为使用CLR集成。

答案 2 :(得分:2)

我通常建议不要使用CLR程序,在大多数情况下,您可以将您遇到的问题重构为Transact Sql可以处理的问题。 最关心的是当关系数据库在执行基于集合的操作时表现最佳时,通常伴随CLR过程使用的过程方法。

所以我总是问的第一个问题是,无论如何都要将问题重构为基于集合的操作。

如果没有,那么我问你为什么要在数据库服务器内部而不是在应用程序层中执行代码?通过将逻辑放在数据库中来考虑可能对性能产生的影响。 (如果您的数据库服务器有足够的额外处理时间,这可能不是问题。)

如果您确实使用CLR程序,我认为它们最适用于密集计算和复杂逻辑。