2012-08-04 46 views
1

我有一个供应商SQL Server 2008数据库,我试图使用附加表格等来定制我的订单处理.Net 3.5网站。厂商数据库不应该改变。不过,我需要记录供应商的数据库中未包含的当前订单状态。在供应商sql server数据库上使用VIEWS的替代方案

目前我正在使用VIEW和CASE来获取基于订单表中数据的状态。为了提高性能,我想用OrderID & Current_Status创建一个新的状态表。

为了使状态表保持最新状态,您还可以选择经常运行一个脚本来查看所有订单并相应地更新状态表?

+1

定义你的意思是'供应商数据库不应该被改变。'添加一个视图或表正在改变数据库,但你*做*允许这两个选项。你可以添加触发器到供应商的表格吗?供应商的表是否通过存储过程填充,您是否可以更改这些存储过程? – MatBailie 2012-08-04 08:08:03

+0

我的意思是供应商表和存储过程(用于插入)不应该改变,也不应该触发器添加到这些表中。但是添加额外的表格,视图等是可以的。感谢您的回复 – desflan 2012-08-04 09:23:53

回答

0

如果查询施加的负载不高,并且在数据同步之前可以容忍一些延迟,则创建作业或其他轮询类型解决方案可能没有问题。

如果您至少可以容忍某些延迟,但查询表的查询范围很广,或者您有多个要执行此操作的表,则还可以使用Change Tracking,因为您拥有SQL Server 2008。

Here's a link关于如何使用它。

0

创建一个SSIS作业来检查订单并更新状态表。并安排它按小时/每天运行(根据您的要求)。创建SSIS作业不会影响您的任何供应商进程或对象。

+0

感谢您的提示。我应该期望在每30分钟运行一次SSIS作业并扫描orders表中的数千行的date_modified字段以确定需要在状态表中更新哪些内容时,数据库的性能会受到很大影响吗? – desflan 2012-08-04 14:17:07

0

如果性能是您的担心,那么索引视图怎么样?

+0

我目前正在使用索引视图,由于CASE语句的复杂性被用来确定每次用户查看订单时的状态,因此证明效率很低。因此,我将状态存储在表中的原因是它自己的。 – desflan 2012-08-05 10:17:50

+0

但这是索引视图的事情;服务器“实现”视图并使其或多或少像表格一样。也就是说它存储物理视图。为了清楚起见,你已经完成了“创建索引”与你的观点,它仍然很慢? – 2012-08-06 03:08:37

相关问题