服务器端sql与客户端sql

时间:2011-11-02 02:45:24

标签: sql

过去两个小时,我一直在寻找这个问题的答案。我甚至找不到一个相关的帖子/书/答案。有人可以向我解释服务器端脚本和客户端脚本之间的区别。我知道触发器是服务器端脚本的一部分,但实际上,两者之间的区别是什么。能否请你提供几个例子。

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为你不能说有“客户端SQL”这样的东西。可能存在由客户端应用程序生成的SQL命令/语句,但它们直接在Database Enginer上执行以保留并记录。

换句话说,客户端应用程序可能会发出此消息:

select *
from SomeTable

如果成功,SELECT将在数据库服务器上执行,而不是客户端应用程序,即使它是生成它的位置。

现在您可能正在尝试区分生成SQL代码的位置。客户端应用程序可能会生成大量数据操作语言(DML)代码(即INSERT/UPDATE/DELETE)并执行OLAP(SELECT)。服务器将为触发器之类的事件生成SQL和事件。带有触发器的数据库引擎将看到对数据库,对象或服务器本身执行了操作,然后此事件将“触发”数据库引擎以执行另一段SQL代码。这将是服务器生成SQL。

我想我理解你的问题,但请告诉我是否有别的或我没有正确回答。

答案 1 :(得分:1)

这实际上可能意味着一些不同的东西,但可能与您最相关的解释(基于您提到的触发器)是服务器端脚本是预编译的SQL并以形式存储在数据库中触发器,函数,存储过程,视图等,而客户端SQL(也称为动态SQL)是包含在应用程序中的SQL。

实现服务器端SQL的一些原因包括性能(数据库可以预编译和优化SQL),安全性和维护(修改存储过程要比重新编译和重新发布应用程序容易得多)

我们发现实现动态SQL的主要原因是处理不容易通过服务器端SQL处理的情况,通常涉及可变长度的where语句。