修改SQL Server中Select, Update, Insert的实现



首先给你的问题:我想知道是否有可能在SQL Server中创建一个存储过程或拦截和翻译SELECT, INSERT和UPDATE命令的东西。下面是解释:

我正在写一个web应用程序,以取代旧的桌面应用程序。这是一个商业应用程序,基本上是一个数据库接口的报告和搜索和所有好的旧的CRUD。新旧应用程序需要和谐共存,因为有些客户可能会同时使用新旧应用程序访问同一个数据库。

我的问题是,原始数据库格式存储大多数数据在一个单一的blob文本(1 nvarchar(MAX)字段)。我想添加搜索存储在blob中的字段的功能,但这将是繁琐和缓慢的。我想在不改变桌面应用程序的情况下更新数据库格式,因此出现了上面的问题。

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

如果有人想知道,旧的应用程序是在VB6和新的c#。

编辑

好的,所以看起来如果我在服务器端做任何事情,我们正在考虑添加存储过程,然后更新客户端VB6代码来引用存储过程。做一些事情,比如用sp_oldselect批量替换SELECT…以不同的格式返回数据。我猜想客户端包装器将是目前最好的解决方案。

您可以为旧客户端创建一堆视图,并让它查询这些视图。在大多数情况下,它会慢得要命,但它可以"替代"选择查询。更新和插入…嗯. .在某些情况下,可以代替视图上的触发器,但它需要大量的处理。

然而,我的建议是在web应用程序中提供完全相同的功能,弃用桌面应用程序。当桌面应用程序的份额足够低时,停止支持它。从这里开始,您(基本上)可以自由地添加新函数、升级数据库模式等。

我同意JonH的观点,这里很多都可能出错,但您可以尝试阅读MS SQL服务器中的INSTEAD OF触发器:https://technet.microsoft.com/en-us/library/ms179288(v=sql.105).aspx

相关内容

最新更新