Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中更改选择、更新和插入的实现_Sql Server - Fatal编程技术网

Sql server 在SQL Server中更改选择、更新和插入的实现

Sql server 在SQL Server中更改选择、更新和插入的实现,sql-server,Sql Server,首先给你一个问题:我想知道是否有可能在SQLServer中创建一个存储过程或其他东西来截取和转换SELECT、INSERT和UPDATE命令。现在解释一下: 我正在编写一个web应用程序来替换旧的桌面应用程序。它是一个商业应用程序,基本上是一个数据库界面,有报告、搜索和所有好的积垢。新应用和旧应用需要和谐共处,因为一些客户可能会同时使用新应用和旧应用访问同一数据库 我的问题是,原始数据库格式将大多数数据存储在单个文本块1 nvarcharMAX字段中。我想添加功能来搜索存储在blob中的字段,但

首先给你一个问题:我想知道是否有可能在SQLServer中创建一个存储过程或其他东西来截取和转换SELECT、INSERT和UPDATE命令。现在解释一下:

我正在编写一个web应用程序来替换旧的桌面应用程序。它是一个商业应用程序,基本上是一个数据库界面,有报告、搜索和所有好的积垢。新应用和旧应用需要和谐共处,因为一些客户可能会同时使用新应用和旧应用访问同一数据库

我的问题是,原始数据库格式将大多数数据存储在单个文本块1 nvarcharMAX字段中。我想添加功能来搜索存储在blob中的字段,但这样做既麻烦又慢。我想在不改变桌面应用程序的情况下更新数据库格式,因此出现了上述问题

我突然想到,我可以在客户机上通过为数据访问对象编写一个包装器类来实现这一点,然后在客户机代码中进行批量替换以引用包装器,但我也想知道服务器上的选项是什么

如果有人想知道,旧的应用程序在VB6中,新的应用程序在C中

编辑


好的,看起来如果我在服务器端做任何事情,我们都会添加存储过程,然后更新客户端VB6代码以引用存储过程。用sp_oldselect批量替换SELECT之类的操作。。。以不同的格式返回数据。我猜客户端包装器将是目前最好的解决方案。旧的应用程序死气沉沉。

我同意JonH的观点,这里有很多可能出错,但您可以尝试阅读MS SQL server中的INSTEAD OF触发器:

您可以为旧客户端创建一组视图,并让它查询这些视图。在大多数情况下,它会非常慢,但它可以“替换”select查询。用于更新和插入。。好在某些情况下,视图上的替代触发器可能会有所帮助,但这需要大量的处理


然而,我的建议是在web应用程序中提供完全相同的功能,而不推荐桌面应用程序。当桌面应用的份额足够低时,停止支持它。从这一点上讲,您可以自由添加新功能、升级数据库模式等。

Wow这在很多方面都不是一个好主意除了使用前端客户端,您可以将CRUD操作限制在执行所需逻辑的存储过程中,而不是让用户运行临时CRUD查询。我添加了一个答案,因为这个问题很有趣,但太广泛了,所以在目前的状态下,它将以“太广泛”或“主要基于观点”获得接近票数。你能把问题缩小到有确切问题的小块吗?你能回答吗?如果是,不要问它,如果不是,做一些研究,然后如果没有帮助,问它重现问题的步骤,你在研究中发现的东西,以及你尝试过的东西。@Pred-我个人认为更广泛的概念性问题是论坛的一个有用部分。在这个特殊的例子中,我问了这个问题,因为搜索互联网并没有给出让服务器重新解释简单select语句是否可行的答案。我经常发现,许多关闭的主题和意见相关的线程是有益的。有时,一个无知的程序员需要对一个模糊的问题给出一两个答案,然后才能提出一个更完善的查询。没有选择触发器。没有选择触发器:而且它不会解决他所有的问题,但据我所知,没有办法改变SELECT的工作方式。这个建议更适合于评论而不是回答。我下次会这样做: