簡體   English   中英

將SQL Server數據從一個數據庫導出到另一個數據庫

[英]Export SQL Server data from one database to another

我有一個Web應用程序的SQL服務器數據庫,我的要求是從一個源數據庫讀取2-3個表數據並將數據插入目標數據庫。 我的輸入將是一個名稱和一個ID,基於我必須從源數據庫中讀取數據,我必須驗證目標數據庫中是否已存在類似的名稱。 我必須通過C#windows應用程序或Web應用程序執行此操作。

到目前為止,在我的研究中,人們建議使用SqlBulkCopy或SSIS包,我嘗試使用以下代碼傳輸一個表數據。

        using (SqlConnection connSource = new SqlConnection(csSource))
        using (SqlCommand cmd = connSource.CreateCommand())
        using (SqlBulkCopy bcp = new SqlBulkCopy(csDest))
        {
            bcp.DestinationTableName = "SomeTable";
            cmd.CommandText = "myproc";
            cmd.CommandType = CommandType.StoredProcedure;
            connSource.Open();
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                bcp.WriteToServer(reader);
            }
        }

我面臨的問題是,我必須復制2個表數據,基於表1,表2的值如ID(主鍵)更改,我必須在SqlDataReader中更新它,所以為了得到這個新的ID在目標數據庫中,我必須首先插入一個表數據,然后獲取ID,然后在我的reader對象中更新此ID,然后再執行另一個SqlBulkCopy,這看起來不是理想的方法,有沒有其他的去做這個?

在源SQL實例上,我將創建一個引用目標/目標SQL實例的鏈接服務器,然后我將在源數據庫中創建一個存儲過程:

USE SourceDatabase
GO
CREATE PROCEDURE dbo.ExportSomething
@param1 DataType1,
@param2 DataType2, ...
AS
BEGIN

INSERT LinkedServer.DestinationDatabase.dbo.TargetTable
SELECT ...
FROM dbo.Table1 INNER JOIN dbo.Table2 ....
WHERE Col1 = @param1 AND/OR ...

END
GO

然后,最后一步是從客戶端應用程序調用此存儲過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM