Sql server 2005 链接表-SQL Server 2008到SQL Server 2005

Sql server 2005 链接表-SQL Server 2008到SQL Server 2005,sql-server-2005,sql-server-2008,Sql Server 2005,Sql Server 2008,我有一个数据库服务器,目前有两个数据库,分别称为[a]和[B] [A] 我的应用程序使用的是标准数据库吗 [B] 被另一个应用程序使用(这会给服务器带来相当大的负载),但是,我们节省使用一些表(在我的应用程序和使用[B]的主应用程序之间共享)。最近,[B]的使用越来越多,它在我的应用程序中造成了很长的等待时间和超时 我对其他想法持开放态度,但目前我想到的最快的潜在解决方案是获得第二台数据库服务器并将[a]转移到该服务器。然而,我确实需要访问[B]中的一些表——理想情况下,代码更改越少越好 我们正

我有一个数据库服务器,目前有两个数据库,分别称为[a]和[B]

[A] 我的应用程序使用的是标准数据库吗 [B] 被另一个应用程序使用(这会给服务器带来相当大的负载),但是,我们节省使用一些表(在我的应用程序和使用[B]的主应用程序之间共享)。最近,[B]的使用越来越多,它在我的应用程序中造成了很长的等待时间和超时

我对其他想法持开放态度,但目前我想到的最快的潜在解决方案是获得第二台数据库服务器并将[a]转移到该服务器。然而,我确实需要访问[B]中的一些表——理想情况下,代码更改越少越好

我们正在考虑一个类似以下的设置:

当前: 数据库服务器1{[A],[B]}(SQL Server 2005)

新设置 数据库服务器1{[B]}(SQL Server 2005) 数据库服务器2{[A],[B]}(SQL Server 2008)

其中,在新设置中,DBServer2[B]是一个链接到DBServer1[B]的表(某种类型)

我研究了链接数据库,从我的理解(有限)来看,这些数据库作为另一台服务器上的数据库的别名工作,这几乎是我们想要的,只是它添加了额外的服务器限定符,并且在db级别工作。我希望这样做,但理想情况下不使用服务器限定符,而是在表级别

例如,[B]有表、用户和事件。Users表每周都会批量更新,我们经常使用它,因此我们希望在新的DBServer2上有一个本地副本。但是,我们使用事件的频率要低得多,需要在两台服务器之间进行实时处理。在这种情况下,最好将事件作为链接表

此外,如果我们可以在查询中使用相同的标记,那就太棒了。今天,要从一个数据库查询另一个数据库,我们将执行以下操作

从b.事件中选择*加入a.日期

我们希望继续这样做,只是让数据库服务器知道,当我们接触事件时,它实际上位于dbserver1.b.events

这有意义吗?我有时会搞糊涂

谢谢你的帮助 ~P

既然你说你是开放的,我就给你“另类想法”

我们来调查一下缓慢的原因如何?您正在测量的“负载”是多少? 您的磁盘在服务器上的布局如何

也许您可以使用更多内存、另一个CPU或一些SQL调优


使用软件或硬件修复程序修复问题可能比获得服务器并进行所有安装,然后解决可能遇到的集成问题更快。

您可以使用链接对象的同义词-


不幸的是,这只适用于单个对象,您不能为linkedserver.databasename创建同义词,然后引用synDBName.table

我在“我的简单数据库查询需要30秒才能执行”和“我的应用程序正在超时”中测量负载。另一个应用程序运行的查询非常长(以小时为单位),并且运行在数亿条记录上。他们的提问需要额外的时间,这没有问题。我的查询耗时30秒是远远不够的。另外,关于内存和cpu,它们会在一段时间内有所帮助,但这相当有限,因为它们的工作负载增加,它们的查询耗时更长,但对它们来说不是很明显。更不用说在SQL2005上(我不能随意让他们升级他们的东西),没有优先级,所以如果他们的查询正在运行,我的查询将非常匮乏,尽管它们可能会很短很快。(也许在2005年我能做些什么呢?)我很欣赏你的负载指标,但你至少应该打开perfmon看看。听起来他们好像在那个数据库上运行某种报告系统,是吗?你怎么知道内存和cpu在一段时间内是否有用呢?它正在报告。你是对的,这可能对我毫无帮助——如果他们的查询继续使我的资源匮乏。但如果这确实能让我的查询速度加快,他们的工作量很快还会增加(新的职责),这会让我回到类似的位置。您知道sql 2005中有一种基于登录名对查询进行优先级排序的方法吗?这可能会奏效。我喜欢这种潜力——今天晚些时候我会测试它,希望能回来给你一些分数。谢谢你挖得更深一点。