2013-10-08 183 views
1

我正在尋找一個想法或某個方向。我必須將數據從一個數據庫傳輸到另一個數據庫的結構和模式都相同。從一個數據庫到另一個數據庫的數據傳輸

它是一個完整的數據庫,可能有70個表,並且在不同級別的表之間有關係。即使我在移動數據庫時會弄亂身份,但截至目前,我還是可以接受的。

我認爲的想法是將所有表中的所需數據加載到XML中,然後創建到第二個數據庫的連接,並從這個XML中推送數據,這種數據是重複的而不是最好的方式。所以尋找方向。

我可以用這個實體框架嗎?

我不能使用SSIS,因爲它必須是C#對不起。

+0

你可以創建一個鏈接服務器嗎?什麼數據庫? – Paparazzi

+0

@blam:它是SQl sever 2008 R2。你可以創建一個鏈接服務器。所以你說我可以創建一個鏈接服務器,並從一臺服務器讀入另一臺服務器的表中。 – prvnsaini

+1

是的,它是光滑的。你只有4個部分的名字。我的經驗是,如果連接到您正在寫入的服務器,您可以獲得更好的性能。 – Paparazzi

回答

1

您可以按照問題的評論中所述創建鏈接服務器。您似乎表明您已經知道如何執行此操作,但如果沒有,您可以通過在源數據庫服務器上的源數據庫下面深入查看「服務器對象>鏈接服務器」從SQL Server Management Studio執行此操作,單擊「新建鏈接服務器」等

那麼你可以使用如下語句,例如,從你的C#代碼:

insert into DestServer.DBName.dbo.TableName 
select * from SourceServer.DBName.dbo.TableName 

假設你連接到「SourceServer」和「SourceServer '維護指向'DestServer'的鏈接服務器對象。注意:您實際上並不需要在'SourceServer'上使用完全限定名稱的表格,但爲了清晰起見,我已將其放在那裏。 I.E.你也可以這樣做:

insert into DestServer.DBName.dbo.TableName 
select * from TableName 

在您的鏈接服務器的對象不要忘記設置權限正確,使您的查詢可以在目標服務器寫入表。你可以這樣做任何數量的方式,並經常(因爲我在它是由只有我和其他幾個人維持一個小環境中工作),我只是用了「sa」登錄:

enter image description here

+0

剛纔我注意到數據庫在不同的域,我無法創建鏈接的服務器。對此的任何想法 – prvnsaini

+0

如果這是一次性傳輸操作,您可以恢復其他服務器上的一個或另一個數據庫的備份,那麼這兩個數據庫都將是本地的,那麼您甚至可以在不需要鏈接服務器的情況下執行此操作建立。 –

1

是,可以使用.NET中的鏈接服務器。
您只需使用4部分名稱。
您可以在SSMS中使用.NET SQL命令在SSMS中執行什麼操作。

我的經驗是,您可以獲得更好的連接到您正在寫入的服務器的性能。

+0

感謝Blam ..是否有一種方法可以使用實體框架或其他ORM?只是爲了好奇 – prvnsaini

+0

不確定ORM是否會看到鏈接的服務器 - 試試。我不使用ORM。 – Paparazzi

相關問題