2010-09-15 195 views
1

我有一个数据库服务器,当前有两个数据库,称它们为[A]和[B]。 [B]被另一个应用程序使用(这会给服务器带来相当大的负担),但是,我们少量地使用了一些表格(这些表格在我的应用程序和应用程序之间共享)利用[B]的主要应用程序)。最近[B]的使用一直在增加,并且在我的应用程序中造成了很长的等待时间和超时。链接表 - SQL Server 2008到SQL Server 2005

我愿意接受其他想法,但目前我提出的最快的潜在解决方案是获得第二个数据库服务器并将[A]移动到该位置。但是,我确实需要访问[B]中的一些表格 - 理想情况下只需尽可能少的代码更改。

我们想的设置是这样的:

电流: DB服务器1 - {[A],[B]}(SQL Server 2005中)

新安装 DB服务器1 - {[B] }(SQL Server 2005) DB Server 2 {[A],[B]}(SQL Server 2008)

在新设置中,DBServer2。[B]是DBServer1的链接表(种类)。 [B]

我查看了链接的数据库,fr om我理解(限制)这些工作作为另一台服务器上的数据库的别名,这几乎是我们想要的,除了它添加额外的服务器限定符,并且它在db级别上工作。我想要做这样的事情,但理想的情况是没有服务器限定符并且在桌面上。

因此,例如,[B]有表用户和事件。用户表每周按批次更新一次,我们经常使用它,因此我们希望在新的DBServer2上有本地副本。但是,我们使用的事件要少得多,需要在两台服务器之间实时进行。在这种情况下,将事件作为链接表很有用。

此外,如果我们可以对查询使用相同的标记,这将是太棒了。今天就来查询一个DB接收来自其他的我们会做这样的事情

SELECT * FROM b.events加入a.dates

我们想继续,除了有数据库服务器知道,当我们接触事件确实位于dbserver1.b.events。

这有道理吗?我有时会迷惑自己。

感谢所有帮助 〜p

回答

0

您可以使用同义词链接的对象 - http://msdn.microsoft.com/en-us/library/ms177544%28SQL.90%29.aspx

这不幸的是仅适用于单个对象,你不能为linkedserver.databasename的代名词,然后引用synDBName.table。

+0

我喜欢这种潜力 - 我会在今天晚些时候测试它,并希望回来并给你一些观点。感谢您深入挖掘。 – Prescott 2010-09-16 16:40:37

0

“另类想法”从我,因为你说你是开放...

如何寻找到缓慢的原因是什么?什么是你正在测量的“负载”? 你的磁盘在服务器上的布局如何?

也许你可以使用更多的内存,另一个CPU或一些SQL调优?

通过软件或硬件修补程序解决您的问题可能比获取服务器并执行所有安装,然后解决可能遇到的集成问题更快。

+0

我测量“我简单的数据库查询需要30秒执行”的负载和“我的应用程序超时”。其他应用程序运行的查询时间很长(以小时为单位),并且运行数亿条记录。他们的询问需要额外的时间是没问题的。我30秒的查询时间很长。 – Prescott 2010-09-15 16:48:07

+0

此外,关于内存和CPU - 他们会帮助一段时间,但这是相当有限的,因为他们的工作量增加,他们的查询需要更长的时间,但不明显。更不用说在SQL 2005上(我不能自由地让他们升级他们的东西),没有优先级,所以如果他们的查询正在运行,尽管他们可能有多短和多快,但我的应用程序仍然处于饥饿状态。 (也许在2005年我可以做些什么呢?) – Prescott 2010-09-15 16:49:27

+0

我很感谢你的加载指标,但你至少应该打开perfmon并偷看一下。听起来就像他们正在那个数据库上运行某种报告系统,是的?你怎么知道内存和CPU是否会有所帮助? – Sam 2010-09-15 17:00:54