在哪里放SQL逻辑

dav*_*ave 2 c# sql-server performance

我有一个现有的SQL Server数据库,其结构我无法真正改变,虽然我可以添加存储过程或新表,如果我想.我必须编写一个独立的程序来访问数据库,处理数据并生成一些报告.我选择了C#和Visual Studio,因为我们几乎都是MS商店.

我已经开始探索使用VS 2008来创建所述程序.我正在尝试决定在哪里放置一些SQL逻辑.我的主要目标是尽可能简化开发并快速执行.

我应该将SQL逻辑放入存储过程并简单地调用存储过程并让SQL Server执行繁琐的工作并将结果交给我吗?或者我最好在我的代码中保留SQL查询,创建相应的命令并针对SQL Server执行它?

我有一种感觉,前者可能会表现得更好,但我必须分别管理存储过程到我的代码库的其余部分,不是吗?

更新:有人指出,如果C#程序或存储过程中的SQL代码相同,则性能应该相同.如果是这种情况,最容易维护?

2009-10-02:我必须真正考虑选择哪个答案.在撰写本文时,有8个答案,基本上分为5-3,赞成将SQL逻辑放在应用程序中.另一方面,有11个向上投票,分成9-2,支持将SQL逻辑放入存储过程(以及关于这种方式的几个警告).所以我被撕裂了.最后,我要进行投票.但是,如果我遇到麻烦,我会回来改变我选择的答案:)

Adr*_*der 8

如果是大量数据操作,请将其保存在存储过程中的db上.如果查询可能会更改一些,那么更好的位置也会在db中,否则每次更改都可能需要重新部署.