2010-09-15 222 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