2012-02-26 70 views
0

我想要檢索位於另一臺服務器上的SQL Server數據庫上的表 並且我想將檢索到的數據存儲到我自己的SQL Server數據庫中。如何檢索其他服務器上的數據庫

我該怎麼做?

非常感謝

+0

請參閱這:http://blog.sqlauthority.com/2009/07/29/sql-server-2008-copy-database-with-data-generate-t-sql-for-inserting-data-from-one-table- to-another-table/ – Marshal 2012-02-26 13:05:39

回答

0

一個最快的方法,如果你有很多的數據是一個名爲bcp的工具。 它允許您導出和導入數據到文件。因此,您可以從源數據庫導出,然後導入到目標。它非常快。

+0

但我怎麼能在我的web項目中使用它? – 2012-02-28 06:09:18

0

如果您的目標是SQL 2008數據庫,並且您使用C#連接到源並獲取數據,您可以使用Table參數。 .NET中的DataTable可直接映射到SQL Server中的用戶定義表類型。

下面是一個SO線程一下:

How to pass User Defined Table Type as Stored Procedured parameter in C#

在目標數據庫

create type MyCustomTable as Table 
( 
    Field1 int, 
    Field2 varchar(50), 
    Field3 decimal(18,0) 
) 

定義自定義表類型的概念將是從源中讀取所有數據進入數據表。然後,您將使用SqlParameter在目標服務器上執行存儲過程或可能的文本查詢。通過使用接受表參數的存儲過程,你可以做到以下幾點:

CREATE PROCEDURE dbo.BulkCopyData 
(
     @SourceData MyCustomTable readonly --readonly has to be there, Table params have to be readonly as parameters 

) AS 
BEGIN 

     INSERT INTO dbo.DestinationTable 
     (
      Field1, 
      Field2, 
      Field3 
      --more fields 
    ) 
     SELECT Field1,Field2,Field3 FROM @SourceData 


END 

而在C#中,當你去執行命令:

DataTable dt = new DataTable(); //Go get the data from your source here 


SqlConnection conn = new SqlConnection("...."); 
conn.Open(); 
SqlCommand cmd = new SqlCommand("dbo.BulkCopyData",conn) 
cmd.Parameters.Add(new SqlParameter("SourceData", SqlDbType.Structured){ TypeName = "dbo.MyCustomTable ", Value = dt}); 
cmd.Parameters[0]. 
cmd.ExecuteNonQuery(); 
0

可以使用也OPENROWSET功能的SQL和使用您的SQL代碼調用/查詢遠程服務器。 defauld不啓用此功能(您必須使用SP_CONFIGURE存儲過程並啓用遠程查詢才能使用此功能)。這裏有一些例子的鏈接。

http://msdn.microsoft.com/en-us/library/ms190312.aspx

當你需要知道如何設置的配置只是讓我知道)使用

0

連接到您的數據庫SQL Server Management Studio中

轉到服務器對象 - >添加一個新的鏈接服務器

然後您可以使用其他表作爲select * from LinkedServerName.DBName.dbo.TableName

相關問題