2017-06-21 60 views
1

我想使用SSIS在2個SQL Server數據庫之間傳輸大量數據。 如何參數化SQL Server「導入數據」嚮導的輸出並執行它以在其他環境中運行?參數化並執行用於數據導入的SSIS DSTX

在SQL Server中,我右鍵單擊目標數據庫並單擊「導入數據」,然後通過嚮導並選擇「Save SSIS Package」選項。這工作得很好,並生成一個.dstx文件來執行我運行嚮導的服務器上的特定數據庫之間的傳輸。現在我想定製.dstx以便參數化數據源以及源數據庫和目標數據庫,以便能夠在其他環境中運行。然後我希望能夠從命令行執行.dstx包。由於我幾乎對SSIS幾乎一無所知,所以我正在爲這兩個步驟而努力,但我懷疑這應該是一件容易的事情。

另外,試圖從命令行中運行「dtexec.exe」會導致版本3無法運行版本8或某些類似的錯誤(PackageFormatVersion在XML中設置爲8)?

無需在Visual Studio中創建SSIS項目即可完成此操作的最佳方法是什麼?我想直接更新XML並調用任何EXE能夠執行它並接受連接字符串的參數或連接字符串內的單個變量。我能夠成功地雙擊.dstx文件並使用GUI來運行它,但是我希望能夠從命令行執行相同的操作,而無需創建SQL代理作業。

以下是需要參數化的.dstx文件中的XML節點。

<DTS:ConnectionManagers> 
<DTS:ConnectionManager 
    DTS:refId="Package.ConnectionManagers[DestinationConnectionOLEDB]" 
    DTS:CreationName="OLEDB" 
    DTS:DTSID="{72C15889-EC1F-4BFA-A704-7562C68B2463}" 
    DTS:ObjectName="DestinationConnectionOLEDB"> 
    <DTS:ObjectData> 
    <DTS:ConnectionManager 
     DTS:ConnectionString="Data Source=localhost;Initial Catalog=DestinationDatabase;Provider=SQLNCLI11;Integrated Security=SSPI;Auto Translate=false;" /> 
    </DTS:ObjectData> 
</DTS:ConnectionManager> 
<DTS:ConnectionManager 
    DTS:refId="Package.ConnectionManagers[SourceConnectionOLEDB]" 
    DTS:CreationName="OLEDB" 
    DTS:DTSID="{B1415B25-61D6-4202-9BC6-CA59B358B766}" 
    DTS:ObjectName="SourceConnectionOLEDB"> 
    <DTS:ObjectData> 
    <DTS:ConnectionManager 
     DTS:ConnectionString="Data Source=localhost;Initial Catalog=SourceDatabase;Provider=SQLNCLI11;Integrated Security=SSPI;Auto Translate=false;" /> 
    </DTS:ObjectData> 
</DTS:ConnectionManager> 
</DTS:ConnectionManagers> 

回答

2

我幾乎一無所知SSIS,但我懷疑,這應該是一個 容易的事。

對不起,這不是一件容易的事。 SSIS中用於多個環境的連接參數化方式是使用配置文件和包變量,到目前爲止,最簡單的方法是使用Visual Studio中的項目。

如果因爲某些原因無法使用Visual Studio,可以直接在文本編輯器中編輯軟件包的xmla,但找到解釋該如何操作的教程或任何知道離線操作的人,手,然後祝你好運,並進行調試。也許你可以看看使用配置的軟件包的xmla,並將其用作模型(如果有的話)。

+0

您可以保存包並使用包變量。包變量可以通過配置文件來設置... –

+0

這讓我很難過。我只是不使用SSIS,然後在我的SQL Project中使用「post deployment」腳本來處理所需的數據遷移。 – Andy